ASP gb2312 转Unicode

来源:百度知道 编辑:UC知道 时间:2024/06/14 16:31:32
数据库的字符集是gb2312编码 我想把数据库的数据导入Excel
中文出现乱码。如何解决呢。
我用的是英文环境。
例如 “课”字 从数据库取出来是"¿Î"两个字符。如何把"¿Î"转换成“课”字再导入excel 呢。
我现在有一个解决方案但是要用到gb2312-unicode对照表
Function GB2UTF( a_sStr)
Dim sGB,sResult,sTemp ,loArray
Dim iLen,iUnicode,iTemp,i

sGB = Trim(a_sStr)
iLen = Len(sGB)+1
i=1
Do While i < iLen
s1 = Mid(sGB,i,1)
i1=Asc(s1)
s2= Mid(sGB,i+1,1)
i2=Asc(s2)
iTemp = i1*256+i2
iHex=Hex(iTemp)'获取gb2312编码"课"

lsUnicoedHx=GetUnicdeHex(iHex)//根据对照表得到unicode 编码
iUnicode =HexToDexint(lsUnicoedHx)
sResult = sResult & chrw(iUnicode)
i=i+2
Loop

GB2UTF = sResult
End Function

ls=GB2UTF ("¿Î")//结果为"课"
再写入excel就行了。不好的地方是要用到对照表

asp最开始用
<%@codepage=936%>
---------------------
直接response.write就行,不用你那么费劲。
=========================
明白了,这样做:
把开始的@codepage去掉,也就是用系统默认编码。
然后,输出之前,用response.codepage=936。你是win2003吧?IIS6才支持这个属性。
===================================
写了个函数,试下了,可以。

response.write iso2gb("¿Î")
Function iso2gb(s)
Dim stream
Set stream = Server.CreateObject("ADODB.Stream") '建立Stream对象
stream.Type = 2 '1:二进制方式,2:文本方式
stream.Charset = "iso-8859-1" '字符集为GB2312
stream.Open '打开Stream对象
stream.WriteText s '写入文本数据

stream.Position = 0 '指针移动到0位置
stream.Charset = "gb2312" '字符集为GB2312
iso2gb = stream.ReadText '读取Stream中的所有文本

stream.close '关闭Stream对象
set stream = nothing '释放占用的内存
End Function