UTF8 в GB2312 преобразует текст в кодировке UTF8 в текст в кодировке GB, а текст в кодировке UTF8 будет преобразован в коды китайских символов. Друзья, нуждающиеся в этом, могут обратиться к нему. 1. 'UTF в GB --- Преобразование текста в кодировке UTF8 в текст в кодировке GB.
Скопируйте код кода следующим образом:
функция UTF2GB(UTFStr)
от Dig=1 до len(UTFStr)
'Преобразовать, если текст в кодировке UTF8 начинается с %
если Mid(UTFStr,Dig,1)=%, то
'Текст в кодировке UTF8 больше 8 преобразуется в китайские символы
если len(UTFStr) >= Dig+8, то
GBStr=GBStr & ConvChinese(mid(UTFStr,Dig,9))
Копать=Копать+8
еще
GBStr=GBStr & Mid(UTFStr,Dig,1)
конец, если
еще
GBStr=GBStr & Mid(UTFStr,Dig,1)
конец, если
следующий
UTF2GB=GBStr
конечная функция
'Текст в кодировке UTF8 будет преобразован в китайские символы
функция ConvChinese(x)
A = разделение (середина (x, 2),%)
я = 0
j=0
для i=0 до ubound(A)
А(я)=c16to2(А(я))
следующий
для i=0 до ubound(A)-1
DigS=инстр(A(i),0)
Юникод=
для j=1 до DigS-1
если j=1, то
A(i)=right(A(i),len(A(i))-DigS)
Юникод=Юникод и А(я)
еще
я=я+1
А(я)=право(А(я),len(А(я))-2)
Юникод=Юникод и А(я)
конец, если
следующий
если len(c2to16(Unicode))=4, то
ConvChinese=ConvChinese & chrw(int(&H & c2to16(Unicode)))
еще
ConvChinese=ConvChinese & chr(int(&H & c2to16(Unicode)))
конец, если
следующий
конечная функция
'Преобразуем двоичный код в шестнадцатеричный код
функция c2to16(x)
я = 1
для i=1 до len(x) шаг 4
c2to16=c2to16 & hex(c2to10(mid(x,i,4)))
следующий
конечная функция
'Преобразуем двоичный код в десятичный код
функция c2to10(x)
c2to10=0
если x=0, то выходим из функции
я = 0
для i = 0 до len(x) -1
если Mid(x,len(x)-i,1)=1, то c2to10=c2to10+2^(i)
следующий
конечная функция
'Преобразуем шестнадцатеричный код в двоичный код
функция c16to2(x)
я = 0
от i=1 до len(trim(x))
tempstr= c10to2(cint(int(&h & middle(x,i,1))))
делать, пока len(tempstr)<4
темпстр=0&темпстр
петля
c16to2=c16to2 и темпстр
следующий
конечная функция
'Преобразуем десятичный код в двоичный код
функция c10to2(x)
mysign=sgn(x)
х=абс(х)
Раскопки=1
делать
если x<2^DigS, то
выйти, сделать
еще
ДигС=ДигС+1
конец, если
петля
темпномер=х
я = 0
для i=DigS до 1 шаг-1
если tempnum>=2^(i-1), то
темпнум=темпномер-2^(я-1)
c10to2=c10to2 & 1
еще
c10to2=c10to2 & 0
конец, если
следующий
если mysign=-1, то c10to2=- и c10to2
конечная функция
2. 'GB в UTF8 – преобразовать текст в кодировке GB в текст в кодировке UTF8.
Скопируйте код кода следующим образом:
Функция toUTF8(szInput)
Dim wch,uch,szRet
Тусклый х
Тусклый nAsc, nAsc2, nAsc3
'Если входной параметр пуст, выходим из функции
Если szInput = Тогда
toUTF8 = szInput
Выход из функции
Конец, если
'Начать преобразование
Для x = 1 до Len(szInput)
'Используйте функцию Mid для разделения текста, закодированного в ГБ
wch = Mid(szInput, x, 1)
'Используйте функцию ascW, чтобы вернуть код символа Юникода для каждого текста, закодированного в ГБ.
'Примечание: функция asc возвращает код символа ANSI, обратите внимание на разницу
nAsc = AscW(что)
Если 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&uch
Еще
'Код символов Юникода для текста, закодированного в GB, принимает трехбайтовый шаблон между 0800 и FFFF.
uch = % & Hex((nAsc / 2 ^ 12) Или &HE0) & % & _
Hex((nAsc / 2 ^ 6) и &H3F или &H80) & % & _
Шестнадцатеричный (nAsc и &H3F или &H80)
szRet = szRet&uch
Конец, если
Конец, если
Следующий
toUTF8 = сзРет
Конечная функция
3. 'GB в Unicode --- Преобразование текста в кодировке GB в текст в кодировке Unicode.
Скопируйте код кода следующим образом:
функция chinese2unicode(Str)
тусклый я
тусклый Str_one
dimStr_unicode
если(isnull(Str)) то
функция выхода
конец, если
для i=1 до len(Str)
Str_one=Средний(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
деСтр=
от i=1 до len(enStr)
c=Средний(enStr,i,1)
если с=%, то
v=eval(&h+Mid(enStr,i+1,2))
если v<128, то
деСтр=деСтр&хр(в)
я=я+2
еще
если isvalidhex(mid(enstr,i,3)) то
если isvalidhex(mid(enstr,i+3,3)) то
v=eval(&h+Mid(enStr,i+1,2)+Mid(enStr,i+4,2))
деСтр=деСтр&хр(в)
я=я+5
еще
v=eval(&h+Mid(enStr,i+1,2)+cstr(hex(asc(Mid(enStr,i+3,1)))))
деСтр=деСтр&хр(в)
я=я+3
конец, если
еще
дестр=дестр&c
конец, если
конец, если
еще
если с=+ тогда
deStr=deStr&
еще
deStr=deStr&c
конец, если
конец, если
следующий
URLDecode=deStr
конечная функция
'Определить, является ли это действительным шестнадцатеричным кодом
функция isvalidhex(str)
тусклый с
isvalidhex=истина
ул=укейс(стр)
если len(str)<>3, то isvalidhex=false: функция выхода
если left(str,1)<>%, то isvalidhex=false:выход из функции
с=середина(строка,2,1)
если нет (((c>=0) и (c<=9)) или ((c>=A) и (c<=Z))), то isvalidhex=false:exit function
с=середина(строка,3,1)
если нет (((c>=0) и (c<=9)) или ((c>=A) и (c<=Z))), то isvalidhex=false:exit function
конечная функция
%>