UTF-8 Unicode Ansi 汉字GB2321几种编码转换程序

今天搞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

相关推荐