--2007-6-18 12:58:46
vbscript中怎样把gb2312转换为UTF-8编码?
先用数据测试一下,分别在CodePage是65001和936两种情况下使用以下的方法编码同一个字符串,得出以下的结果。encodeURI("我们abc/:")
CodePage="65001": %E6%88%91%E4%BB%ACabc/:
CodePage="936": %E6%88%91%E4%BB%ACabc/:
encodeURIComponent("我们abc/:")
CodePage="65001": %E6%88%91%E4%BB%ACabc%2F%3A
CodePage="936": %E6%88%91%E4%BB%ACabc%2F%3A
Server.URLEncode("我们abc/:")
CodePage="65001": %E6%88%91%E4%BB%ACabc%2F%3A
CodePage="936": %CE%D2%C3%C7abc%2F%3A
escape("我们abc/:")
CodePage="65001": %u6211%u4EECabc/%3A
CodePage="936": %u6211%u4EECabc/%3A
可以看出是没有其他的现成内置方法可以编码出跟encodeURI相同的编码,因为encodeURI方法不会对下列字符进行编码:":"、"/"、";" 和 "?"。
如果楼主在使用encodeURIComponent方法的话,那在VBScript里就可以对应使用Server.URLEncode方法来编码不过前提是要CodePage=65001的情况下。
也就是说楼主可以一开始就定义当前页面的<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
如果一开始是<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>那么可以这样写
Response.CodePage = 65001
Response.Write(Server.URLEncode("我们abc/:"))
Response.CodePage = 936
如果楼主仍然要编码出跟encodeURI出来的一样的代码, 那就按上边的方法在CodePage=65001的环境下Server.URLEncode()然后再将得出的字符串替换一下
%3A 替换成 :
%2F 替换成 /
%3B 替换成 ;
%3F 替换成 ?
这样就可以了。
如果可以改用其他编码的话, 用escape是十分方便的。因为无论在vbscript和javascript, 在客户端和服务器端, codepage=65001或936,
escape都能编码出相同的内容出来。如果提交数据后需要解码可以使用unescape方法即可。
相关内容
下列内容与编码有着内在的联系,建议您一并阅读。