私は今日、私の現在のページがUTF-8のコーディングであることに遭遇しました。もう一度取得するには、これにより間違いなくコードの実行効率が向上しますが、この方法はすぐに使用してはなりません。
たとえば、「漢字」など
UTF-8に基づくエンコーディングは次のとおりです。%E6%B1%89%E5%AD%97
GB2312に基づくエンコードは、次のとおりです。%Ba%Ba%d7%d6 d6
そして、私のウェブページは現在UTF-8でエンコードされているので、これらの純粋なエンコード文字列を漢字に変換する方法は?
まず、次の関数を私のページに含める必要があります。
functionurldecode(ensst)
薄暗い破壊、strspecial
dim c、i、v
破壊=
Strspecial =!#$%& '()*+
i = 1の場合(ensst)
c = mid(ensst、i、1)
c =%の場合
v = eval(&h+mid(ensst、i+1,2))
If strums(strspecial、chr(v))> 0 thenの場合
破壊=破壊&chr(v)
i = i+2
それ以外
v = eval(&h+ mid(ensst、i+ 1,2)+ mid(ensst、i+ 4,2))
破壊=破壊&chr(v)
i = i+5
ifを終了します
それ以外
c =+の場合
破壊=破壊&
それ以外
破壊=破壊&c
ifを終了します
ifを終了します
次
urldecode =破壊
エンド関数
上記の関数は、以下のURLデコード関数です。
関数UTF2GB(UTFSTR)
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進コードに変換されます
関数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
エンド関数
通常のUTF-8ページでは、直接使用できます。
Response.Write UTF2GB(%E6%B1%89%E5%AD%97)
つまり、UTF2GB(%E6%B1%89%E5%AD%97)=漢字
しかし、現在のUTF8ページがGBコーディング(%Ba%Ba%D7%D6など)を取得した場合、どのように漢字に変換できますか?現時点では、上記のurldecode(ensstr)のデコード関数を直接使用することはできません。
<%
session.CodePage = 936 'GB2312の下での強制変換
dim mykey:mykey = urldecode(%ba%ba%d7%d6) 'gb cod string
session.codepage = 65001 'ページを戻ってUTF-8コーディングに戻します
Response.write(mykey)
%>
この時点で、私は漢字を手に入れました。簡単に、次の距離の次の時間をたどることを忘れないでください。