Encontré el problema cuando hice una pequeña característica hoy. Para obtenerlo nuevamente, pero esto sin duda aumentará la eficiencia de ejecución del código.
Por ejemplo, como "caracteres chinos"
La codificación bajo UTF-8 es:%E6%B1%89%E5%AD%97
La codificación bajo GB2312 es:%BA%BA%D7%D6 D6
Y mi página web está actualmente codificada en UTF-8, entonces, ¿cómo convertir esta cadena de codificación pura en caracteres chinos?
En primer lugar, la siguiente función debe incluirse en mi página:
Función Urldecode (EnStr)
Dim destruye, estrés
Dim C, I, V
Destrucción
strspecial =!#$%& '()*+,.
Para i = 1 a Len (Enstr)
C = Mid (Enstr, I, 1)
Si c =% entonces
v = eval (& h+mid (Enstr, i+1,2))
Si Instr (strSpecial, chr (v))> 0 entonces
Destr = Destr & Chr (V)
I = i+2
Demás
V = Eval (& H+ Mid (Enstr, i+ 1,2)+ Mid (Enstr, i+ 4,2)))
Destr = Destr & Chr (V)
I = i+5
Final si
Demás
Si c =+ entonces
DestR = Destr &
Demás
Destr = Destr & c
Final si
Final si
Próximo
Urldecode = destruye
Función final
La función anterior es una función de decodificación de URL.
Función UTF2GB (UTFSTR)
Para Dig = 1 a Len (UTFSTR)
'Si el texto de codificación UTF8 comienza con%, se convertirá
Si Mid (UTFSTR, Dig, 1) =% entonces
'El texto de codificación UTF8 es mayor que 8, luego se convierte a caracteres chinos
Si len (UTFSTR)> = Dig+8 entonces
GBSSTR = GBSSTR & Convchinese (Mid (UTFSTR, DIG, 9))
Excavar+8
Demás
GBSSTR = GBSSTR & MID (UTFSTR, DIG, 1)
Final si
Demás
GBSSTR = GBSSTR & MID (UTFSTR, DIG, 1)
Final si
Próximo
UTF2GB = GBSSTR
Función final
'El texto de codificación UTF8 se convertirá en caracteres chinos
Función convchina (x)
A = Split (Mid (x, 2),%)
i = 0
J = 0
Para i = 0 a Ubound (a)
A (i) = c16to2 (a (i))
Próximo
Para i = 0 a Ubound (a) -1
Excavos = instrerfa (a (i), 0)
Unicode =
Para j = 1 a las excavaciones-1
Si J = 1 entonces
A (i) = right (a (i), len (a (i)) -digs)
Unicode = unicode & a (i)
Demás
I = i+1
A (i) = right (a (i), len (a (i))-2)
Unicode = unicode & a (i)
Final si
Próximo
Si len (C2TO16 (unicode)) = 4 que
Convchinese = Convchinese & Chrw (int (& h & c2to16 (unicode))
Demás
Convchinese = Convchinese & Chr (int (& h & c2to16 (unicode))
Final si
Próximo
Función final
'El código binario se convierte en código hexadecimal
Función C2TO16 (x)
i = 1
Para i = 1 a len (x) paso 4
C2TO16 = C2TO16 y HEX (C2TO10 (Mid (x, i, 4))))
Próximo
Función final
'El código binario se convierte en código decimal
Función C2TO10 (x)
C2TO10 = 0
Si x = 0 entonces salga de la función
i = 0
Para i = 0 a len (x) -1
Si Mid (x, len (x) -i, 1) = 1 entonces c2to10 = c2to10+2^(i)
Próximo
Función final
'El código de las Escrituras se convierte en código binario
Función C16TO2 (x)
i = 0
Para i = 1 a len (recorte (x))
tempttr = c10to2 (cint (int (& h & mid (x, i, 1)))
Hacer mientras Len (tempttr) <4
Tempttr = 0 & tempttr
Bucle
C16TO2 = C16TO2 y TEMPRTR
Próximo
Función final
'El código superior se convierte en código binario
Función C10TO2 (x)
mysign = sgn (x)
x = ABS (x)
Excavaciones = 1
HACER
Si x <2^cava entonces
Salir
Demás
Excavaciones = excavaciones+1
Final si
Bucle
tempnum = x
i = 0
Para i = excava a 1 paso-1
Si tempnum> = 2^(i-1) entonces
tempnum = tempnum-2^(i-1)
C10TO2 = C10TO2 y 1
Demás
C10TO2 = C10TO2 y 0
Final si
Próximo
If mysign = -1 entonces c10to2 = -& c10to2
Función final
En la página normal de UTF-8, podemos usarla directamente:
Respuesta. Escribe UTF2GB (%E6%B1%89%E5%AD%97)
Es decir: UTF2GB (%E6%B1%89%E5%AD%97) = Caracteres chinos
Pero si la página UTF8 actual obtiene una codificación GB (como%BA%BA%D7%D6), ¿cómo podemos convertirla en caracteres chinos? En este momento, la función de decodificación del UrlDecode (EnStr) anterior se usará anteriormente, pero no se puede usar directamente para cambiar el modo de codificación de la página actual.
<%
Session.Codepage = 936 'Conversión forzada a debajo de GB2312
Dim mykey: mykey = urlDecode (%ba%ba%d7%d6) 'Cadena de bacalao GB
Session.codepage = 65001 'retrocede la página de nuevo a UTF-8 codificando nuevamente
Response.Write (MyKey)
%>
En este momento, tengo caracteres chinos. ¿Qué tal, simple, recuerde seguir este sitio la próxima vez en la distancia?