乐府诗个人博客 >> ASP >> vbscript中怎样把gb2312转换为UTF-8编码?

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方法即可。

下列内容与编码有着内在的联系,建议您一并阅读。

公益广告