access数据库编码转换:将将UTF8替换为GB2312

<%
response.codepage=936
response.charset="gb2312"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("news.mdb")
conn.open connstr
    set rs=server.CreateObject("ADODB.RecordSet")
    sql="select title,author,keyword from PE_Article"
    rs.open sql,conn,1,3
do while not rs.eof
    rs("title")=xx(rs("title"))
    rs("author")=xx(rs("author"))
    rs("keyword")=xx(rs("keyword"))
    rs.movenext
loop
rs.updateBatch
rs.close
set rs=nothing
conn.close
set conn=nothing
function xx(fileContent)
    dim stm
    set stm=Server.CreateObject("adodb.stream") 
    stm.Type=2
    stm.Mode=3
    stm.Charset="GB2312"
    stm.Open 
    stm.WriteText fileContent
    stm.Position=0
    stm.Charset="UTF-8"
    xx = stm.ReadText
    stm.Close 
    set stm=nothing 
End function
%>
以上测试正确
----------------------------------------------------------------------------------------
  前几天有个朋友从国外买了一个ASP空间,今天把网站上传之后发现所有从access数据库读取的数据都是乱码,实在找不到好的解决方法后过来问我。

具体情况是这样的:

非程序生成的文字可以显示。但程序生成的文字就只有E文可以显示了,中文全是?号。
可惜我用asp的那阵没用过国外空间,还真没碰到过ASP读取access数据库出现乱码的情况,所以没有办法,只好去网上找,网上各种各样的说法很多,但是最终还是归结了三种解决方法,列在下面,以备后用:

方法一:
使用 Microsoft Access 2000 打开数据库,选择工具菜单>数据库实用工具>转换数据库>到早期 Access 数据库版本。OK!

方法二:

后来订阅了微软的新闻组,在微软的新闻组dotnet.framework.aspplus.general中发现有讨论这
个问题的文章,方法为添加<%@ CODEPAGE = "936" %>到每一页的开头,有点类似于jsp中的
<%@ page c%>
赶紧测试了一下,果然OK!!!

例子如下面所示:
<%@ CODEPAGE = "936" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.ADO" %>
<%@ Import Namespace="System.Globalization" %>

<meta http-equiv="Content-Type" />
方法三:

添加一个config.web文件到
web目录下,
建立一个文件config.web,内容如下,放在WEB目录下
<configuration>
<globalization>
requestencoding="utf-8"
resp
/>
</globalization>

对于第一个解决办法,可能会出现转化不成功等情况;第二种方法的弊端就是要修改很多的asp文件;第三种方法好像是对asp.net的程序起作用,asp.net我还真没用过,不好妄加评论。

这三种方法适用于access数据库出现乱码的问题,对于整个网页都出现乱码的问题,请检查你的页面代码里面是否在meta标签里面设定了编码。如:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 


'下面引用自http://hi.baidu.com/worldit/blog/item/587f723e7259dd3970cf6cd8.html   测试方法一不管用

--------------------------------------------------------------------------------------------
非程序生成的文字可以显示。但程序生成的文字就只有E文可以显示了。中文全是?号,这是数据库乱码引起的,解决方法可以考虑如下:

GoDaddy网站:www.godaddy.com

方法一:

注意:操作数据库前一定要备份。

使用 Microsoft Access 2000或者2003 打开数据库,选择工具菜单>数据库实用工具>转换数据库>到早期 Access 数据库版本,如Access97!转换后重新上传即可。

方法二:
注意备份原程序

 代码:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
如果下面<%@ CODEPAGE = “936″ %>这个不行,可以试试上面这句代码。
在微软的新闻组dotnet.framework.aspplus.general中发现有讨论这个问题的文章,方法为添加<%@ CODEPAGE = “936″ %>到每一页的开头,有点类似于jsp中的<%@ page c%>。

 

 


例子如下面所示:
<%@ CODEPAGE = “936″ %>
<%@ Import Namespace=”System.Data” %>
<%@ Import Namespace=”System.Data.ADO” %>
<%@ Import Namespace=”System.Globalization” %>
<html>
<head>
<meta http-equiv=”Content-Type” c>
</head>

方法三:

添加一个config.web文件到web目录下。建立一个文件config.web,内容如下,放在WEB目录下
<configuration>
<globalization
requestencoding=”utf-8″
resp
/>
</configuration>
一般方法1和2比较有效


'--------------------以上正确




[本日志由 admin 于 2009-08-02 12:09 AM 编辑]
文章来自: 本站原创
引用通告地址: http://www.is21.cn/trackback.asp?tbID=695
Tags:
评论: 0 | 引用: 0 | 查看次数: 3309
发表评论
你没有权限发表留言!