asp html编码转换,ASP编码转换函数(GB转UTF-8等)

'======================================utf转gb

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

'===================================gb转utf8

function toutf8(szinput)

dim wch, uch, szret

dim x

dim nasc, nasc2, nasc3

if szinput = "" then

toutf8 = szinput

exit function

end if

for x = 1 to len(szinput)

wch = mid(szinput, x, 1)

nasc = ascw(wch)

if nasc < 0 then nasc = nasc + 65536

if (nasc and &hff80) = 0 then

szret = szret & wch

else

if (nasc and &hf000) = 0 then

uch = "%" & hex(((nasc \ 2 ^ 6)) or &hc0) & hex(nasc and &h3f or &h80)

szret = szret & uch

else

uch = "%" & hex((nasc \ 2 ^ 12) or &he0) & "%" & _

hex((nasc \ 2 ^ 6) and &h3f or &h80) & "%" & _

hex(nasc and &h3f or &h80)

szret = szret & uch

end if

end if

next

toutf8 = szret

end function

'=====================================gb转unicode

function chinese2unicode(str)

dim i

dim str_one

dim str_unicode

if(isnull(str)) then

exit function

end if

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

'=====================================url解码

function urldecode(enstr)

dim destr

dim c,i,v

destr=""

for i=1 to len(enstr)

c=mid(enstr,i,1)

if c="%" then

v=eval("&h"+mid(enstr,i+1,2))

if v<128 then

destr=destr&chr(v)

i=i+2

else

if isvalidhex(mid(enstr,i,3)) then

if isvalidhex(mid(enstr,i+3,3)) then

v=eval("&h"+mid(enstr,i+1,2)+mid(enstr,i+4,2))

destr=destr&chr(v)

i=i+5

else

v=eval("&h"+mid(enstr,i+1,2)+cstr(hex(asc(mid(enstr,i+3,1)))))

destr=destr&chr(v)

i=i+3

end if

else

destr=destr&c

end if

end if

else

if c="+" then

destr=destr&" "

else

destr=destr&c

end if

end if

next

urldecode=destr

end function

function isvalidhex(str)

dim c

isvalidhex=true

str=ucase(str)

if len(str)<>3 then isvalidhex=false:exit function

if left(str,1)<>"%" then isvalidhex=false:exit function

c=mid(str,2,1)

if not (((c>="0") and (c<="9")) or ((c>="a") and (c<="z"))) then isvalidhex=false:exit function

c=mid(str,3,1)

if not (((c>="0") and (c<="9")) or ((c>="a") and (c<="z"))) then isvalidhex=false:exit function

end function

%>

分享到:更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值