灵妖大骚动:600分:ASP页面中,怎么用VB代码把gb2312转化为UTF-8?

来源:百度文库 编辑:高考问答 时间:2024/04/27 11:26:28
http://zhidao.baidu.com/question/6897863.html
http://zhidao.baidu.com/question/6905380.html
不知道的滚,乱抄代码的滚!
我知道javascript中有EncodeURI(要转换的字符)函数,请问vbscript有没有相应的函数?
我要的只是类似Javascript的encodeURI()的语法。只要一个函数就可以了!不要Function之类的东西!没有这样的函数的话,拿出具体可行方案也可以的。
我对我的一些粗鲁语句表示道歉!对不起!
大猫,我发信息给你了。4个函数,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都能编码出相同的内容出来。

是不是用在XMLHTTP程序的?
如果是就不用转换,可以试下修改
http_request.responsetext;
为:
http_request.responseBody;
就行.

可以告诉你没有响应的函数,解决的方法是自己写一个function.
所以说那,你不要function本身就错了。类似这样底层开发,几百分高手是不会告诉你的。提示你可以参考一下网上关于utf-8,gb2312是转换的实质。楼上的给的函数没有只是转换成了utf-8的转义码。所以那个函数是不对的。

这种人理还不理他,
谁还给他回答,
为了几个臭分用不着这么作践自己~!

\'-----------------------------------------------------------------------
function encodestr(str)
dim i
str=trim(str)
str=replace(str,\"\'\",\"\"\"\")
str=replace(str,vbCrLf&vbCrlf,\"</p><p>\")
encodestr=replace(str,vbCrLf,\"<br>\")
end function
\'--互相转换
Function uni(Chinese)
For j = 1 to Len (Chinese)
a=Mid(Chinese, j, 1)
uni= uni & \"&#\" & Hex(Ascw(a)) & \";\"
next
End Function
\'------------------------------------------------------------
http://blog.stonemx.com/

建一个函数
function urlencoding(vstrin)
dim i,strreturn,strSpecial, t
strSpecial = " <>""#%{}|^~[]`'&?+"&chr(13)&chr(10)
strreturn = ""
for i = 1 to len(vstrin)
thischr = mid(vstrin,i,1)
if abs(asc(thischr)) < &hff then
if instr(strSpecial,thischr)>0 then
if thischr = " " then
strreturn = strreturn & "+"
else
t = hex(asc(thischr))
if len(t) = 1 then t = "0"&t
strreturn = strreturn & "%" & t
end if
else
strreturn = strreturn & thischr
end if
else
innercode = asc(thischr)
if innercode < 0 then
innercode = innercode + &h10000
end if
hight8 = (innercode and &hff00)\ &hff
low8 = innercode and &hff
strreturn = strreturn & "%" & hex(hight8) & "%" & hex(low8)
end if
next
urlencoding = strreturn
end function