參考文檔:http://www.linuxforum.net/books/UTF-8-Unicode.html
代碼如下:
===========================================
複製代碼代碼如下:
<scriptlanguage="VBScript">
'http://www.linuxforum.net/books/UTF-8-Unicode.html
PublicFunctionUTF8EncodeChar(z)
Dimc:c=AscW(z)'取UNICODE編碼
ifc>0Andc<256Then'Asc編碼直接返回
UTF8EncodeChar=z
ExitFunction
EndIf
Ifc<0Thenc=c+&H10000&'VBScript的Integer溢出,加上
Dimk:k=CLng(c)'備份一個編碼,後面判斷要用
Dimb()
Dimi:i=0
Whilec>&H0&'將編碼按照6位一組,分組存到字節數組b中
ReDimPreserveb(i)
b(i)=CByte(cAnd&H3F&)
c=c/&H40&
i=i+1
Wend
IfUBound(b)>0Then'如果分開的6位組不止一個,除最高一組外,全部加上二進制10000000
Fori=0ToUBound(b)-1
b(i)=b(i)+&H80
Next
EndIf
i=UBound(b)'根據字符的UNICODE編碼範圍,給最高組加上前綴
Ifk<=CLng(&H7F&)Then
b(i)=b(i)+0
ElseIfk<=CLng(&H7FF&)Then
b(i)=b(i)+&HC0
ElseIfk<=Clng(&HFFFF&)Then
b(i)=b(i)+&HE0
ElseIfk<=CLng(&H1FFFFF&)Then
b(i)=b(i)+&HF0
ElseIfk<=CLng(&H3FFFFFF&)Then
b(i)=b(i)+&HF8
Else
b(i)=b(i)+&HFC
EndIf
UTF8EncodeChar=""
Fori=UBound(b)To0Step-1'將分組轉換成URL編碼
UTF8EncodeChar=UTF8EncodeChar&"%"&Right("00"&Hex(b(i)),2)
Next
Eraseb
EndFunction
PublicFunctionUTF8EncodeString(s)
Dimi,l,c:l=Len(s)
Fori=1Tol
UTF8EncodeString=UTF8EncodeString&UTF8EncodeChar(Mid(s,i,1))
Next
EndFunction
MsgBoxUTF8EncodeString("圪圪eglic")
</script>
測試方法:
http://www.google.com/search?hl=zh-CN&newwindow=1&rls=GGLG%2CGGLG%3A2006-15%2CGGLG%3Azh-CN&q=你的編碼
複製代碼代碼如下:
functionrevertUTF8(szInput)
{
varx,wch,wch1,wch2,uch="",szRet="";
for(x=0;x<szInput.length;x++)
{
if(szInput.charAt(x)=="%")
{
wch=parseInt(szInput.charAt(++x)+szInput.charAt(++x),16);
if(!wch){break;}
if(!(wch&0x80))
{
wch=wch;
}
elseif(!(wch&0x20))
{
x++;
wch1=parseInt(szInput.charAt(++x)+szInput.charAt(++x),16);