asp中有关字符编码转换的几个函数,编码的程序

符合 GOOGLE 的 Unicode 编码

  1图片 1图片 2<%图片 3
  2图片 41、’UTF转GB—将UTF8编码文字转换为GB编码文字
  3图片 5function UTF2GB(UTFStr) 
  4图片 6
  5图片 7for Dig=1 to len(UTFStr) 
  6图片 8  ‘如果UTF8编码文字以%开头则进行转换
  7图片 9  if mid(UTFStr,Dig,1)=”%” then 
  8图片 10     ‘UTF8编码文字大于8则转换为汉字
  9图片 11    if len(UTFStr) >= Dig+8 then 
 10图片 12       GBStr=GBStr & ConvChinese(mid(UTFStr,Dig,9)) 
 11图片 13       Dig=Dig+8 
 12图片 14    else 
 13图片 15      GBStr=GBStr & mid(UTFStr,Dig,1) 
 14图片 16    end if 
 15图片 17  else 
 16图片 18     GBStr=GBStr & mid(UTFStr,Dig,1) 
 17图片 19  end if 
 18图片 20next 
 19图片 21UTF2GB=GBStr 
 20图片 22end function 
 21图片 23
 22图片 24‘UTF8编码文字将转换为汉字
 23图片 25function ConvChinese(x) 
 24图片 26   A=split(mid(x,2),”%”) 
 25图片 27   i=0 
 26图片 28   j=0 
 27图片 29  for i=0 to ubound(A) 
 28图片 30     A(i)=c16to2(A(i)) 
 29图片 31  next 
 30图片 32  for i=0 to ubound(A)-1 
 31图片 33    DigS=instr(A(i),”0″) 
 32图片 34    Unicode=”” 
 33图片 35    for j=1 to DigS-1 
 34图片 36      if j=1 then 
 35图片 37        A(i)=right(A(i),len(A(i))-DigS) 
 36图片 38        Unicode=Unicode & A(i) 
 37图片 39      else 
 38图片 40         i=i+1 
 39图片 41         A(i)=right(A(i),len(A(i))-2) 
 40图片 42         Unicode=Unicode & A(i) 
 41图片 43      end if 
 42图片 44    next 
 43图片 45
 44图片 46    if len(c2to16(Unicode))=4 then 
 45图片 47       ConvChinese=ConvChinese & chrw(int(“&H” & c2to16(Unicode))) 
 46图片 48    else 
 47图片 49       ConvChinese=ConvChinese & chr(int(“&H” & c2to16(Unicode))) 
 48图片 50    end if 
 49图片 51  next 
 50图片 52end function 
 51图片 53
 52图片 54‘二进制代码转换为十六进制代码
 53图片 55function c2to16(x)
 54图片 56   i=1 
 55图片 57   for i=1 to len(x) step 4 
 56图片 58      c2to16=c2to16 & hex(c2to10(mid(x,i,4))) 
 57图片 59   next 
 58图片 60end function 
 59图片 61
 60图片 62‘二进制代码转换为十进制代码
 61图片 63function c2to10(x)
 62图片 64   c2to10=0 
 63图片 65   if x=”0″ then exit function 
 64图片 66     i=0 
 65图片 67   for i= 0 to len(x) -1 
 66图片 68      if mid(x,len(x)-i,1)=”1″ then c2to10=c2to10+2^(i) 
 67图片 69   next 
 68图片 70end function 
 69图片 71
 70图片 72‘十六进制代码转换为二进制代码
 71图片 73function c16to2(x) 
 72图片 74    i=0 
 73图片 75    for i=1 to len(trim(x)) 
 74图片 76      tempstr= c10to2(cint(int(“&h” & mid(x,i,1)))) 
 75图片 77      do while len(tempstr)<4 
 76图片 78         tempstr=”0″ & tempstr 
 77图片 79      loop 
 78图片 80      c16to2=c16to2 & tempstr 
 79图片 81   next 
 80图片 82end function 
 81图片 83
 82图片 84‘十进制代码转换为二进制代码
 83图片 85function c10to2(x) 
 84图片 86   mysign=sgn(x) 
 85图片 87   x=abs(x) 
 86图片 88   DigS=1 
 87图片 89   do 
 88图片 90      if x<2^DigS then 
 89图片 91        exit do 
 90图片 92      else 
 91图片 93        DigS=DigS+1 
 92图片 94      end if 
 93图片 95   loop 
 94图片 96   tempnum=x 
 95图片 97
 96图片 98   i=0 
 97图片 99   for i=DigS to 1 step-1 
 98图片 100      if tempnum>=2^(i-1) then 
 99图片 101         tempnum=tempnum-2^(i-1) 
100图片 102         c10to2=c10to2 & “1” 
101图片 103      else 
102图片 104         c10to2=c10to2 & “0” 
103图片 105      end if 
104图片 106   next 
105图片 107   if mysign=-1 then c10to2=”-” & c10to2 
106图片 108end function
107图片 109
108图片 1102、’GB转UTF8–将GB编码文字转换为UTF8编码文字
109图片 111
110图片 112Function toUTF8(szInput)
111图片 113    Dim wch, uch, szRet
112图片 114    Dim x
113图片 115    Dim nAsc, nAsc2, nAsc3
114图片 116    ‘如果输入参数为空,则退出函数
115图片 117    If szInput = “” Then
116图片 118        toUTF8 = szInput
117图片 119        Exit Function
118图片 120    End If
119图片 121    ‘开始转换
120图片 122     For x = 1 To Len(szInput)
121图片 123        ‘利用mid函数分拆GB编码文字
122图片 124        wch = Mid(szInput, x, 1)
123图片 125        ‘利用ascW函数返回每一个GB编码文字的Unicode字符代码
124图片 126        ‘注:asc函数返回的是ANSI 字符代码,注意区别
125图片 127        nAsc = AscW(wch)
126图片 128        If nAsc < 0 Then nAsc = nAsc + 65536
127图片 129    
128图片 130        If (nAsc And &HFF80) = 0 Then
129图片 131            szRet = szRet & wch
130图片 132        Else
131图片 133            If (nAsc And &HF000) = 0 Then
132图片 134                uch = “%” & Hex(((nAsc  2 ^ 6)) Or &HC0) & Hex(nAsc And &H3F Or &H80)
133图片 135                szRet = szRet & uch
134图片 136            Else
135图片 137               ‘GB编码文字的Unicode字符代码在0800 – FFFF之间采用三字节模版
136图片 138                uch = “%” & Hex((nAsc  2 ^ 12) Or &HE0) & “%” & _
137图片 139                            Hex((nAsc  2 ^ 6) And &H3F Or &H80) & “%” & _
138图片 140                            Hex(nAsc And &H3F Or &H80)
139图片 141                szRet = szRet & uch
140图片 142            End If
141图片 143        End If
142图片 144    Next
143图片 145        
144图片 146    toUTF8 = szRet
145图片 147End Function
146图片 148
147图片 1493、’GB转unicode—将GB编码文字转换为unicode编码文字
148图片 150
149图片 151function chinese2unicode(Str) 
150图片 152  dim i 
151图片 153  dim Str_one 
152图片 154  dim Str_unicode 
153图片 155  if(isnull(Str)) then
154图片 156     exit function
155图片 157  end if
156图片 158  for i=1 to len(Str) 
157图片 159    Str_one=Mid(Str,i,1) 
158图片 160    Str_unicode=Str_unicode&chr(38) 
159图片 161    Str_unicode=Str_unicode&chr(35) 
160图片 162    Str_unicode=Str_unicode&chr(120) 
161图片 163    Str_unicode=Str_unicode& Hex(ascw(Str_one)) 
162图片 164    Str_unicode=Str_unicode&chr(59) 
163图片 165  next 
164图片 166  chinese2unicode=Str_unicode 
165图片 167end function   
166图片 168
167图片 1694、’URL解码
168图片 170Function URLDecode(enStr)
169图片 171dim deStr
170图片 172dim c,i,v
171图片 173deStr=””
172图片 174for i=1 to len(enStr)
173图片 175  c=Mid(enStr,i,1)
174图片 176  if c=”%” then
175图片 177   v=eval(“&h”+Mid(enStr,i+1,2))
176图片 178   if v<128 then
177图片 179    deStr=deStr&chr(v)
178图片 180    i=i+2
179图片 181   else
180图片 182    if isvalidhex(mid(enstr,i,3)) then
181图片 183     if isvalidhex(mid(enstr,i+3,3)) then
182图片 184      v=eval(“&h”+Mid(enStr,i+1,2)+Mid(enStr,i+4,2))
183图片 185      deStr=deStr&chr(v)
184图片 186      i=i+5
185图片 187     else
186图片 188      v=eval(“&h”+Mid(enStr,i+1,2)+cstr(hex(asc(Mid(enStr,i+3,1)))))
187图片 189      deStr=deStr&chr(v)
188图片 190      i=i+3 
189图片 191     end if 
190图片 192    else 
191图片 193     destr=destr&c
192图片 194    end if
193图片 195   end if
194图片 196  else
195图片 197   if c=”+” then
196图片 198    deStr=deStr&” “
197图片 199   else
198图片 200    deStr=deStr&c
199图片 201   end if
200图片 202  end if
201图片 203next
202图片 204URLDecode=deStr
203图片 205end function
204图片 206
205图片 207‘判断是否为有效的十六进制代码
206图片 208function isvalidhex(str)
207图片 209dim c
208图片 210isvalidhex=true
209图片 211str=ucase(str)
210图片 212if len(str)<>3 then isvalidhex=false:exit function
211图片 213if left(str,1)<>”%” then isvalidhex=false:exit function
212图片 214  c=mid(str,2,1)
213图片 215if not (((c>=”0″) and (c<=”9″)) or ((c>=”A”) and (c<=”Z”))) then isvalidhex=false:exit function
214图片 216  c=mid(str,3,1)
215图片 217if not (((c>=”0″) and (c<=”9″)) or ((c>=”A”) and (c<=”Z”))) then isvalidhex=false:exit function
216图片 218end function
217图片 219%>
218图片 220

汉字 经过 encodeURIComponent 变成 %E6%B1%89%E5%AD%97
%E6%B1%89%E5%AD%97 经过 decodeURIComponent 变成 汉字

用 Google 搜索“汉字”:

 

符合百度的 ANSI 编码

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

用百度搜索“汉字”:

test.asp 原程序如下

(下载源程序 )

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

今天搞sxna,遇到了编码转换的难题,找了一个多小时,历尽千辛万苦,总算总结了如下的汉字转换为各种UTF-8
Unicode Ansi编码的程序.不敢独享,特此奉献给各位编程爱好者!

发表评论

电子邮件地址不会被公开。 必填项已用*标注