|
今天搞sxna,遇到了编码转换的难题,搞了一个多小时,历尽千辛万苦,总算总结了如下的汉字转换为各种UTF-8 Unicode Ansi编码的程序.不敢独享,特此奉献给各位编程爱好者!
-------------------------------------------------------------------------------- 符合GOOGLE的UTF编码 汉字 经过encodeURIComponent变成 %E6%B1%89%E5%AD%97
%E6%B1%89%E5%AD%97经过decodeURIComponent变成汉字
用google搜索"汉字": http://www.google.com/search?hl=zh-CN&q=%E6%B1%89%E5%AD%97
符合BAIDU的UTF-8编码 汉字 经过 AnsiCode 变为 %BA%BA%D7%D6
BA%BA%D7%D6 经过 DeCodeAnsi 变为 汉字
用baidu搜索"汉字": http://www.baidu.com/baidu?word=%BA%BA%D7%D6
--------------------------------------------------------------------------------
汉字经过chinese2unicode变为汉字
汉字经过UTF2GB变为汉字
--------------------------------------------------------------------------------
test.asp 原程序如下 (下载源程序 http://www.dc9.cn/upload/test.rar) 复制代码 代码如下: UTF-8 Unicode Ansi 汉字GB2321几种编码转换程序
今天搞sxna,遇到了编码转换的难题,找了一个多小时,历尽千辛万苦,总算总结了如下的汉字转换为各种UTF-8 Unicode Ansi编码的程序.不敢独享,特此奉献给各位编程爱好者!
<script language="JAVASCRIPT" runat="server"> var ss; var dd; ss=decodeURIComponent("%E6%B1%89%E5%AD%97"); dd=encodeURIComponent("汉字"); </script> 符合GOOGLE的UTF编码 <p> 汉字 经过encodeURIComponent变成 <%=dd%> </p> <p> %E6%B1%89%E5%AD%97经过decodeURIComponent变成 <%=ss%> </p>
<script language="vbscript" runat="server"> Function AnsiCode(vstrIn) Dim i, strReturn, innerCode, ThisChr Dim Hight8, Low8 strReturn = "" For i = 1 To Len(vstrIn) ThisChr = Mid(vStrIn,i,1) If Abs(Asc(ThisChr)) < &HFF Then strReturn = strReturn & ThisChr 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 AnsiCode = strReturn End Function
Function DeCodeAnsi(s) Dim i, sTmp, sResult, sTmp1 sResult = "" For i=1 To Len(s) If Mid(s,i,1)="%" Then sTmp = "&H" & Mid(s,i+1,2) If isNumeric(sTmp) Then If CInt(sTmp)=0 Then i = i + 2 ElseIf CInt(sTmp)>0 And CInt(sTmp)<128 Then sResult = sResult & Chr(sTmp) i = i + 2 Else If Mid(s,i+3,1)="%" Then sTmp1 = "&H" & Mid(s,i+4,2) If isNumeric(sTmp1) Then sResult = sResult & Chr(CInt(sTmp)*16*16 + CInt(sTmp1)) i = i + 5 End If Else sResult = sResult & Chr(sTmp) i = i + 2 End If End If Else sResult = sResult & Mid(s,i,1) End If Else sResult = sResult & Mid(s,i,1) End If Next DeCodeAnsi = sResult End Function </script> 符合BAIDU的UTF-8编码 <p> 汉字 经过 AnsiCode 变为 <%=AnsiCode("汉字")%> </p> <p> %BA%BA%D7%D6 经过 DeCodeAnsi 变为 <%=DeCodeAnsi("%BA%BA%D7%D6 ")%> </p>
<% '汉字转换为UTF-8 function chinese2unicode(Str) dim i dim Str_one dim Str_unicode for i=1 to len(Str) Str_one=Mid(Str,i,1) Str_unicode=Str_unicode&chr(38) Str_unicode=Str_unicode&chr(35) Str_unicode=Str_unicode&chr(120) Str_unicode=Str_unicode& Hex(ascw(Str_one)) Str_unicode=Str_unicode&chr(59) next chinese2unicode=Str_unicode end function
'UTF-8 To GB2312
function UTF2GB(UTFStr) for Dig=1 to len(UTFStr) if mid(UTFStr,Dig,1)="%" then if len(UTFStr) >= Dig+8 then GBStr=GBStr & ConvChinese(mid(UTFStr,Dig,9)) Dig=Dig+8 else GBStr=GBStr & mid(UTFStr,Dig,1) end if else GBStr=GBStr & mid(UTFStr,Dig,1) end if next UTF2GB=GBStr end function
function ConvChinese(x) A=split(mid(x,2),"%") i=0 j=0
for i=0 to ubound(A) A(i)=c16to2(A(i)) next
for i=0 to ubound(A)-1 DigS=instr(A(i),"0") Unicode="" for j=1 to DigS-1 if j=1 then A(i)=right(A(i),len(A(i))-DigS) Unicode=Unicode & A(i) else i=i+1 A(i)=right(A(i),len(A(i))-2) Unicode=Unicode & A(i) end if next
if len(c2to16(Unicode))=4 then ConvChinese=ConvChinese & chrw(int("&H" & c2to16(Unicode))) else ConvChinese=ConvChinese & chr(int("&H" & c2to16(Unicode))) end if next end function
function c2to16(x) i=1 for i=1 to len(x) step 4 c2to16=c2to16 & hex(c2to10(mid(x,i,4))) next end function
function c2to10(x) c2to10=0 if x="0" then exit function i=0 for i= 0 to len(x) -1 if mid(x,len(x)-i,1)="1" then c2to10=c2to10+2^(i) next end function
function c16to2(x) i=0 for i=1 to len(trim(x)) tempstr= c10to2(cint(int("&h" & mid(x,i,1)))) do while len(tempstr)<4 tempstr="0" & tempstr loop c16to2=c16to2 & tempstr next end function
function c10to2(x) mysign=sgn(x) x=abs(x) DigS=1 do if x<2^DigS then exit do else DigS=DigS+1 end if loop tempnum=x
i=0 for i=DigS to 1 step-1 if tempnum>=2^(i-1) then tempnum=tempnum-2^(i-1) c10to2=c10to2 & "1" else c10to2=c10to2 & "0" end if next if mysign=-1 then c10to2="-" & c10to2 end function %> <P>汉字经过chinese2unicode变为 <%=chinese2unicode("汉字")%>(需要察看源代码,浏览器已经直接翻译) </p> <p>汉字经过UTF2GB变为 <%=UTF2GB("汉字")%>(需要察看源代码,浏览器已经直接翻译)
另外在网上发现了一个不错的编码转换小站 http://www.dheart.net/bmzh/index.php |
|