J'ai rencontré le problème lorsque j'ai fait une petite fonctionnalité aujourd'hui. Pour le récupérer, mais cela augmentera sans aucun doute l'efficacité d'exécution du code.
Par exemple, comme "les caractères chinois"
Le codage sous UTF-8 est:% E6% B1% 89% E5% AD% 97
Le codage sous GB2312 est:% ba% ba% d7% d6 d6
Et ma page Web est actuellement encodée dans UTF-8, alors comment convertir ces chaînes d'encodage pure en caractères chinois?
Tout d'abord, la fonction suivante doit être incluse dans ma page:
Fonction urldecode (ENSTR)
Dim destr, strspecial
Dim c, i, v
Destr =
strSpecial =! # $% & '() * +,. -_ /:;
Pour i = 1 à Len (Entr)
C = mid (Entr, i, 1)
Si c =% alors
v = eval (& h + mid (Entr, i + 1,2))
Si instr (strSpecial, chr (v))> 0 alors
Destr = destr & chr (v)
I = i + 2
Autre
V = evale
Destr = destr & chr (v)
I = i + 5
Terminer si
Autre
Si c = + alors
Destr = destr &
Autre
Destr = destr & c
Terminer si
Terminer si
Suivant
UrldeCode = destr
Fonction finale
La fonction ci-dessus est une fonction de décodage d'URL.
Fonction utf2gb (utfstr)
Pour Dig = 1 à Len (UTFSTR)
`` Si le texte de codage UTF8 commence par%, il sera converti
Si mid (utfstr, dig, 1) =% alors
`` Le texte de codage UTF8 est supérieur à 8, puis converti en caractères chinois
Si Len (utfstr)> = DIG + 8 alors
Gbstr = gbstr & convchinese (mid (utfstr, dig, 9))
DIG = DIG + 8
Autre
Gbstr = gbstr & mid (utfstr, dig, 1)
Terminer si
Autre
Gbstr = gbstr & mid (utfstr, dig, 1)
Terminer si
Suivant
UTF2GB = GBSTR
Fonction finale
`` Le texte de codage UTF8 sera converti en caractères chinois
Fonction convchinese (x)
A = divisé (mid (x, 2),%)
i = 0
j = 0
Pour i = 0 à ubound (a)
A (i) = c16to2 (a (i))
Suivant
Pour i = 0 à ubound (a) -1
DIGS = instant (a (i), 0)
Unicode =
Pour j = 1 à creuser-1
Si j = 1 alors
A (i) = droit (a (i), len (a (i)) -digs)
Unicode = Unicode et A (I)
Autre
I = i + 1
A (i) = à droite (a (i), len (a (i)) - 2)
Unicode = Unicode et A (I)
Terminer si
Suivant
Si Len (C2TO16 (Unicode)) = 4
Convchinese = Convchinese & chrw (int (& h & c2to16 (Unicode))
Autre
Convchinese = Convchinese & Chr (int (& h & c2to16 (Unicode))
Terminer si
Suivant
Fonction finale
'Code binaire converti en code hexadécimal
Fonction C2TO16 (x)
i = 1
Pour i = 1 à len (x) Étape 4
C2TO16 = C2TO16 & HEX (C2TO10 (MID (X, I, 4)))
Suivant
Fonction finale
«Le code binaire se convertit en code décimal
Fonction C2TO10 (x)
C2to10 = 0
Si x = 0 alors la fonction de sortie
i = 0
Pour i = 0 à len (x) -1
Si mid (x, len (x) -i, 1) = 1 alors c2to10 = c2to10 + 2 ^ (i)
Suivant
Fonction finale
'Le code des Écritures est converti en code binaire
Fonction C16TO2 (x)
i = 0
Pour i = 1 à Len (Trim (x))
TEMPSTR = C10TO2 (CINT (int (& h & mid (x, i, 1)))
Faire pendant que Len (temptr) <4
Temptr = 0 & Temptr
Boucle
C16TO2 = C16TO2 & TEMPTR
Suivant
Fonction finale
'Top Code Converti en code binaire
Fonction C10TO2 (x)
mySign = sgn (x)
x = abs (x)
Fouilles = 1
FAIRE
Si x <2 ^ creuse alors
Sortir faire
Autre
Fouilles = creuse + 1
Terminer si
Boucle
tempnum = x
i = 0
Pour i = creuse à 1 étape 1
Si tempnum> = 2 ^ (i-1) alors
tempnum = tempnum-2 ^ (i-1)
C10TO2 = C10TO2 & 1
Autre
C10TO2 = C10TO2 & 0
Terminer si
Suivant
Si mySign = -1 alors C10TO2 = - & C10TO2
Fonction finale
Sur la page UTF-8 normale, nous pouvons l'utiliser directement:
Réponse.WRITE UTF2GB (% E6% B1% 89% E5% AD% 97)
C'est-à-dire: UTF2GB (% E6% B1% 89% E5% AD% 97) = caractères chinois
Mais si la page UTF8 actuelle obtient un codage GB (tel que% ba% ba% d7% d6), comment pouvons-nous le convertir en caractères chinois? À l'heure actuelle, la fonction de décodage de l'URLDECODE (ENSTR) sera utilisée ci-dessus, mais il ne peut pas être utilisé directement.
<%
Session.codepage = 936 'Conversion forcée en sous GB2312
Dim myKey: myKey = UrlDecode (% ba% ba% d7% d6) 'String GB COD
Session.CodePage = 65001 'Retour la page Retour à UTF-8 Codage à nouveau
Response.Write (Mykey)
%>
À ce moment, j'ai eu des caractères chinois. Que diriez-vous, simple, n'oubliez pas de suivre ce site la prochaine fois dans la distance.