加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

UTF-8轉GB2312函數

发布时间:2020-12-26 18:06:13 所属栏目:Asp教程 来源:网络整理
导读:% '用途:將UTF-8編碼漢字轉換為GB2312碼,兼容英文和數字 '版權:雖說是原創,其實也參考了別人的部分算法 '用法:Response.write?UTF2GB("%E9%83%BD%E5%B8%82%E6%83%85%E7%B7%A3?%E6%98%9F%E5%BA%A7") function?UTF2GB(UTFStr) ????for?Dig=1?to?len(UTFStr) ?

<%
'用途:將UTF-8編碼漢字轉換為GB2312碼,兼容英文和數字
'版權:雖說是原創,其實也參考了別人的部分算法
'用法:Response.write?UTF2GB("%E9%83%BD%E5%B8%82%E6%83%85%E7%B7%A3?%E6%98%9F%E5%BA%A7")


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,9))
????????????????Dig=Dig+8
????????????else
????????????????GBStr=GBStr?&?mid(UTFStr,1)
????????????end?if
????????else
????????????GBStr=GBStr?&?mid(UTFStr,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,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
%>?

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读