Encontrei o problema quando fiz um pequeno recurso hoje. Para obtê -lo novamente, mas, sem dúvida, aumentará a eficiência da execução do código.
Por exemplo, como "caracteres chineses"
A codificação sob UTF-8 é:%E6%B1%89%E5%AD%97
A codificação sob GB2312 é:%ba%ba%d7%d6 d6
E minha página da web está atualmente codificada no UTF-8, então como converter essas string de codificação pura em caracteres chineses?
Primeiro de tudo, a seguinte função deve ser incluída na minha página:
Função urldecode (enstr)
Dim Dest, StrSpecial
Dim C, i, v
Destro =
StrSpecial =!#$%& '()*+,.
Para i = 1 a len (enstr)
C = MID (ENSTR, I, 1)
Se c =% então
V = EVALL (& H+MID (ENSTR, I+1,2))
Se Instr (StrSpecial, Chr (V))> 0 Então
Dest = destro & Chr (V)
I = i+2
Outro
V = EVALL (& H+ MID (ENSTR, I+ 1,2)+ MID (ENSTR, I+ 4,2))
Dest = destro & Chr (V)
I = i+5
Final se
Outro
Se c =+ então
Desto = destro &
Outro
Desto = destro & c
Final se
Final se
Próximo
Urldecode = destro
Função final
A função acima é uma função de decodificação de URL.
Função utf2gb (utfstr)
Para escav = 1 a len (utfstr)
'Se o texto da codificação UTF8 começar com%, ele será convertido
Se MID (UTFSTR, DIG, 1) =% então
'O texto de codificação UTF8 é maior que 8, depois convertido em caracteres chineses
Se Len (utfstr)> = Dig+8 então
GBSTR = GBSTR & CONVCHINESSE (MID (UTFSTR, DIG, 9))
Escav = escava+8
Outro
GBSTR = GBSTR & MID (UTFSTR, DIG, 1)
Final se
Outro
GBSTR = GBSTR & MID (UTFSTR, DIG, 1)
Final se
Próximo
Utf2gb = gbStr
Função final
'O texto de codificação UTF8 será convertido em caracteres chineses
Função convchinês (x)
A = divisão (MID (x, 2),%)
i = 0
j = 0
Para i = 0 para ubound (a)
A (i) = c16to2 (a (i))
Próximo
Para i = 0 a ubound (a) -1
Digs = Instr (a (i), 0)
Unicode =
Para j = 1 para escavações-1
Se J = 1 então
A (i) = direita (a (i), len (a (i)) -digs)
Unicode = unicode & a (i)
Outro
I = i+1
A (i) = certo (a (i), len (a (i))-2)
Unicode = unicode & a (i)
Final se
Próximo
Se Len (C2to16 (unicode)) = 4 que
Convchinese = Convchinese & Chrw (int (& h & c2to16 (unicode))
Outro
Convchinese = Convchinese & Ch (int (& h & c2to16 (unicode))
Final se
Próximo
Função final
'Código binário se converte ao código hexadecimal
Função c2to16 (x)
i = 1
Para i = 1 a Len (x) Etapa 4
C2TO16 = C2TO16 & Hex (C2TO10 (MID (X, I, 4)))
Próximo
Função final
'Código binário se converte em código decimal
Função c2to10 (x)
C2to10 = 0
Se x = 0 então a função de saída
i = 0
Para i = 0 a len (x) -1
Se mid (x, len (x) -i, 1) = 1 então c2to10 = c2to10+2^(i)
Próximo
Função final
'O código das escrituras é convertido em código binário
Função c16to2 (x)
i = 0
Para i = 1 a Len (Trim (x))
tempstr = c10to2 (cint (int (& h & mid (x, i, 1)))
Faça enquanto Len (tempstr) <4
Tempstr = 0 & tempstr
Laço
C16to2 = c16to2 e tempstr
Próximo
Função final
'Código superior convertido em código binário
Função C10to2 (x)
mysign = sgn (x)
x = abs (x)
Escavações = 1
FAZER
Se x <2^cavar então
Saída do
Outro
Escavações = escavações+1
Final se
Laço
tempnum = x
i = 0
Para i = escavações para 1 etapa-1
Se tempnum> = 2^(i-1) então
tempnum = tempnum-2^(i-1)
C10to2 = c10to2 e 1
Outro
C10to2 = c10to2 e 0
Final se
Próximo
Se mysign = -1 então c10to2 = -& c10to2
Função final
Na página UTF-8 normal, podemos usá-la diretamente:
Response.Write UTF2GB (%E6%B1%89%E5%AD%97)
Ou seja: UTF2GB (%E6%B1%89%E5%AD%97) = caracteres chineses
Mas se a página UTF8 atual obtiver uma codificação GB (como%Ba%Ba%D7%D6), como podemos convertê -lo em caracteres chineses? Neste momento, a função de decodificação do Urldecode (ENSTR) acima será usada acima, mas não pode ser usada diretamente.
<%
Session.codePage = 936 'Conversão forçada para sob GB2312
Dim MyKey: myKey = urldecode (%ba%ba%d7%d6) 'gb cod string
Session.codePage = 65001 'de volta a página de volta à codificação UTF-8
Response.write (mykey)
%>
Neste momento, eu tenho personagens chineses. Que tal, simples, lembre-se de seguir este site no próximo tempo à distância.