この記事では、ASPで転送できる非常に便利なコードを提供します。これらには、UTF8 GB2312バイナリ10進コード16進数が含まれます。
'UTFからGBへ--- UTF8エンコードテキストをGBエンコードテキストに変換する
関数UTF2GB(UTFSTR)for dig = 1 to len(utfstr)
'UTF8コーディングテキストが%で始まると、変換されます
mid(utfstr、dig、1)=%の場合
'UTF8エンコーディングテキストは8を超えており、漢字に変換されます
Len(utfstr)> = dig+8の場合
gbstr = gbstr&convchinese(mid(utfstr、dig、9))
dig = dig+8
それ以外
GBSTR = GBSTR&MID(UTFSTR、DIG、1)
ifを終了します
それ以外
GBSTR = GBSTR&MID(UTFSTR、DIG、1)
ifを終了します
次
UTF2GB = GBSTR
エンド関数
'UTF8エンコーディングテキストは漢字に変換されます
function convchinese(x)
a = split(mid(x、2)、%)
i = 0
j = 0
i = 0からubound(a)
a(i)= c16to2(a(i))
次
i = 0からubound(a)-1の場合
digs = strust(a(i)、0)
Unicode =
j = 1からdigs-1の場合
J = 1の場合
a(i)= right(a(i)、len(a(i))-digs)
unicode = unicode&a(i)
それ以外
i = i+1
a(i)= right(a(i)、len(a(i))-2)
unicode = unicode&a(i)
ifを終了します
次
LEN(C2TO16(Unicode))= 4の場合
Convchinese = Convchinese&Chrw(int(&h&c2to16(unicode))
それ以外
Convchinese = convchinese&chr(int(&h&c2to16(unicode))
ifを終了します
次
エンド関数
'バイナリコードは16進コードに変換されます
unction c2to16(x)
i = 1
i = 1の場合(x)ステップ4
c2to16 = c2to16&hex(c2to10(mid(x、i、4)))
次
エンド関数
'バイナリコードは小数コードに変換されます
関数C2TO10(x)
C2TO10 = 0
x = 0の場合、関数を終了します
i = 0
i = 0の場合(x)-1
mid(x、len(x)-i、1)= 1の場合、c2to10 = c2to10+2^(i)
次
エンド関数
「聖書コードはバイナリコードに変換されます
関数c16to2(x)
i = 0
i = 1 to len(trim(x))へ
tempstr = c10to2(cint(int(&h&mid(x、i、1)))
len(tempstr)<4を実行します
tempstr = 0&tempstr
ループ
c16to2 = c16to2&tempstr
次
エンド関数
'トップコードはバイナリコードに変換します
関数c10to2(x)
mysign = sgn(x)
x = abs(x)
掘る= 1
する
x <2^が掘る場合
終了します
それ以外
digs = digs+1
ifを終了します
ループ
tempnum = x
i = 0
i = 1ステップ1を掘ります
tempnum> = 2^(i-1)の場合
tempnum = tempnum-2^(i-1)
C10TO2 = C10TO2&1
それ以外
C10TO2 = C10TO2&0
ifを終了します
次
mysign = -1の場合、c10to2 = - &c10to2
エンド関数
'gbからutf8に換気テキストをutf8エンコードテキストにエンコードするテキストへ
関数toutf8(szinput)
dim wch、uch、szret
dim x
Dim NASC、NASC2、NASC3
'入力パラメーターが空の場合、出口機能
szinput = thenの場合
toutf8 = szinput
出口機能
ifを終了します
'変換を開始します
x = 1の場合(szinput)
'ミッド関数を使用して、テキストをエンコードするGBを分割します
wch = mid(szinput、x、1)
'ASCW関数を使用して、各GBエンコードされたテキストのUnicode文字コードを返します
'注:ASC関数はANSI文字コードを返し、違いに注意してください
NASC = ASCW(WCH)
NASC <0の場合、NASC = NASC + 65536
if(nasc and&hff80)= 0 then
szret = szret&wch
それ以外
if(nasc and&hf000)= 0 then
uch =%&hex((nasc / 2 ^ 6))または&hc0&hex(nasc and&h3fまたは&h80)
szret = szret&uch
それ以外
'GBエンコーディングテキストUnicode文字コードは0800 -FFFFの間に使用されます
uch =%&hex((nasc / 2 ^ 12)または&he0)&%&_
ヘックス((NASC / 2 ^ 6)および&H3Fまたは&H80)&%&_
hex(NASC and&H3Fまたは&H80)
szret = szret&uch
ifを終了します
ifを終了します
次
toutf8 = szret
エンド関数
'GBからUnicode --- GBエンコードテキストをUnicodeエンコードテキストに変換する
functionshine2unicode(str)
薄暗いi
dim str_one
dim str_unicode
if(isnull(str))then
出口機能
ifを終了します
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)
次
Mishnos2unicode = str_unicode
エンド関数
'URLデコード
functionurldecode(ensst)
薄暗い破壊
dim c、i、v
破壊=
i = 1の場合(ensst)
c = mid(ensst、i、1)
c =%の場合
v = eval(&h+mid(ensst、i+1,2))
v <128の場合
破壊=破壊&chr(v)
i = i+2
それ以外
isvalidhex(mid(ensst、i、3))の場合
isvalidhex(mid(ensst、i+3、3))の場合
v = eval(&h+mid(ensst、i+1,2)+mid(ensst、i+4,2))
破壊=破壊&chr(v)
i = i+5
それ以外
v = eval(&h+mid(ensst、i+1,2)+cstr(hex(asc(ensst、i+3、1)))))))
破壊=破壊&chr(v)
i = i+3
ifを終了します
それ以外
破壊=破壊&c
ifを終了します
ifを終了します
それ以外
c =+の場合
破壊=破壊&
それ以外
破壊=破壊&c
ifを終了します
ifを終了します
次
urldecode =破壊
エンド関数
'効果的な16進コードであるかどうかを判断します
関数isvalidhex(str)
薄暗いc
isvalidhex = true
str = ucase(str)
len(str)<> 3 isvalidhex = false:exit function
残っている場合(str、1)<>%then isvalidhex = false:exit関数
c = mid(str、2,1)
((((((((((((((((((((((((())))))および((((((c> = 0))))および((((((((= 0)= 0)))」と(((((((((((()= 0)= 0))」と((((((((((()))」 = 9))または((c> = a)および(c <= z)))thenisvalidhex = false:exit関数
c = mid(str、3,1)
((((((((((((((((((((((((())))))および((((((c> = 0))))および((((((((= 0)= 0)))」と(((((((((((()= 0)= 0))」と((((((((((()))」 = 9))または((c> = a)および(c <= z)))thenisvalidhex = false:exit関数
エンド関数