UTF8 to GB2312 は、UTF8 エンコードされたテキストを GB エンコードされたテキストに変換し、UTF8 エンコードされたテキストは中国語の文字コードに変換されます。必要な友人はそれを参照できます。 1. 'UTF から GB --- UTF8 でエンコードされたテキストを GB でエンコードされたテキストに変換します
次のようにコードをコピーします。
関数 UTF2GB(UTFStr)
Dig=1 から len(UTFStr) の場合
'UTF8 でエンコードされたテキストが % で始まるかどうかを変換します
if mid(UTFStr,Dig,1)=% then
'UTF8 でエンコードされた 8 より大きいテキストは漢字に変換されます
len(UTFStr) >= Dig+8 の場合
GBStr=GBStr & Conv Chinese(mid(UTFStr,Dig,9))
掘る=掘る+8
それ以外
GBStr=GBStr & Mid(UTFStr,Dig,1)
終了する場合
それ以外
GBStr=GBStr & Mid(UTFStr,Dig,1)
終了する場合
次
UTF2GB=GBStr
終了関数
'UTF8 でエンコードされたテキストは漢字に変換されます
関数Conv Chinese(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=instr(A(i),0)
ユニコード=
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)
終了する場合
次
len(c2to16(Unicode))=4 の場合
Conv中国語=Conv中国語 & chrw(int(&H & c2to16(Unicode)))
それ以外
Conv中国語=Conv中国語 & chr(int(&H & c2to16(Unicode)))
終了する場合
次
終了関数
'バイナリコードを16進コードに変換します
関数 c2to16(x)
i=1
i=1 から len(x) へのステップ 4
c2to16=c2to16 & hex(c2to10(mid(x,i,4)))
次
終了関数
'バイナリコードを10進コードに変換します
関数 c2to10(x)
c2to10=0
x=0 の場合、関数を終了します
i=0
i= 0 ~ len(x) -1 の場合
Mid(x,len(x)-i,1)=1 の場合、c2to10=c2to10+2^(i)
次
終了関数
'16進コードを2進コードに変換します
関数 c16to2(x)
i=0
i=1 から len(trim(x)) まで
tempstr= c10to2(cint(int(&h &mid(x,i,1))))
len(tempstr)<4 の間実行します
tempstr=0&tempstr
ループ
c16to2=c16to2 & tempstr
次
終了関数
'10進コードを2進コードに変換します
関数 c10to2(x)
mysign=sgn(x)
x=abs(x)
掘る=1
する
x<2^DigS の場合
終了します
それ以外
ディグS=ディグS+1
終了する場合
ループ
温度番号=x
i=0
for i=DigS から 1 ステップ-1
tempnum>=2^(i-1) の場合
tempnum=tempnum-2^(i-1)
c10to2=c10to2 & 1
それ以外
c10to2=c10to2 & 0
終了する場合
次
mysign=-1 の場合、c10to2=- & c10to2
終了関数
2. 'GB から UTF8 -- GB でエンコードされたテキストを UTF8 でエンコードされたテキストに変換します
次のようにコードをコピーします。
UTF8(szInput)への関数
薄暗い、うーん、szRet
ディム×
ディム nAsc、nAsc2、nAsc3
'入力パラメータが空の場合は関数を終了します
szInput = の場合
toUTF8 = szInput
終了関数
終了の場合
'変換を開始します
x = 1 の場合、To Len(szInput)
'mid 関数を使用して GB エンコードされたテキストを分割します
wch = Mid(szInput, x, 1)
'ascW 関数を使用して、各 GB エンコードされたテキストの Unicode 文字コードを返します
'注: asc 関数は ANSI 文字コードを返します。違いに注意してください。
nAsc = AscW(wch)
nAsc < 0 の場合、nAsc = nAsc + 65536
(nAsc および &HFF80) = 0 の場合
szRet = szRet & wch
それ以外
(nAsc および &HF000) = 0 の場合
uch = % & Hex(((nAsc / 2 ^ 6)) または &HC0) & Hex(nAsc および &H3F または &H80)
szRet = szRet(&U)
それ以外
'GBエンコードテキストのUnicode文字コードは0800~FFFFの3バイトテンプレートを採用
uch = % & Hex((nAsc / 2 ^ 12) または &HE0) & % & _
Hex((nAsc / 2 ^ 6) および &H3F または &H80) & % & _
16 進数 (nAsc および &H3F または &H80)
szRet = szRet(&U)
終了の場合
終了の場合
次
toUTF8 = szRet
終了機能
3. ' GB から unicode --- GB でエンコードされたテキストを Unicode でエンコードされたテキストに変換します
次のようにコードをコピーします。
関数 chinese2unicode(Str)
薄暗い私
ディム Str_one
dimStr_unicode
if(isnull(Str)) then
終了関数
終了する場合
i=1 から 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)
次
chinese2unicode=Str_unicode
終了関数
4.「URLデコード」
次のようにコードをコピーします。
関数 URLDecode(enStr)
ディムデストラ
薄暗い c、i、v
deStr=
i=1 から len(enStr) まで
c=Mid(enStr,i,1)
c=% の場合
v=eval(&h+Mid(enStr,i+1,2))
v<128 の場合
deStr=deStr&chr(v)
i=i+2
それ以外
if isvalidhex(mid(enstr,i,3))
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
それ以外
v=eval(&h+Mid(enStr,i+1,2)+cstr(hex(asc(Mid(enStr,i+3,1))))
deStr=deStr&chr(v)
i=i+3
終了する場合
それ以外
destr=destr&c
終了する場合
終了する場合
それ以外
c=+ の場合
deStr=deStr&
それ以外
deStr=deStr&c
終了する場合
終了する場合
次
URLDecode=deStr
終了関数
'有効な 16 進コードかどうかを判断します
関数 isvalidhex(str)
薄暗いC
isvalidhex=true
str=ucase(str)
if len(str)<>3 then isvalidhex=false:関数を終了
if left(str,1)<>% then isvalidhex=false:exit 関数
c=mid(str,2,1)
(((c>=0) および (c<=9)) または ((c>=A) および (c<=Z))) でない場合、 isvalidhex=false:exit 関数
c=mid(str,3,1)
(((c>=0) および (c<=9)) または ((c>=A) および (c<=Z))) でない場合、 isvalidhex=false:exit 関数
終了関数
%>