符合 Google、百度 URL 编码的程序

作者: 来源:SXNA 日期:2005-12-20

符合 GOOGLE 的 Unicode 编码

汉字 经过 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

 

符合百度的 ANSI 编码

汉字 经过 AnsiCode 变为 %BA%BA%D7%D6
BA%BA%D7%D6 经过 DeCodeAnsi 变为 汉字

用百度搜索“汉字”:

http://www.baidu.com/baidu?word=%BA%BA%D7%D6

test.asp 原程序如下

(下载源程序 http://www.itpow.com/upload/unicode.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("汉字")%>(需要察看源代码,浏览器已经直接翻译)
</p>

相关文章