Ich habe das Problem aufgenommen, als ich heute eine kleine Funktion erstellt habe. Um es erneut zu erreichen, wird dies zweifellos die Ausführungseffizienz des Codes erhöhen.
Zum Beispiel wie "chinesische Charaktere"
Die Codierung unter UTF-8 beträgt:%e6%b1%89%e5%ad%97
Die Codierung unter GB2312 lautet:%ba%ba%d7%d6 d6
Und meine Webseite ist derzeit in UTF-8 codiert.
Zunächst sollte die folgende Funktion in meiner Seite enthalten sein:
Funktion Urldecode (ENSTR)
Schwacher Zerstörungen, Strspecial
Dim C, I, V.
Zerstörung =
Strspecial =!#$%& '()*+, -_/:;
Für i = 1 bis len (enstr)
C = MID (ENSTR, I, 1)
Wenn c =% dann
v = Eval (& H+Mid (ENSTR, I+1,2))
Wenn Instrum
Zerstörungen = Zerstörungen & chrt (v)
I = i+2
Anders
V = eval (& h+ mid (ENSTR, I+ 1,2)+ MID (ENSTR, I+ 4,2))
Zerstörungen = Zerstörungen & chrt (v)
I = i+5
Ende wenn
Anders
Wenn c =+ dann
Zerstörung = Zerstörungen &
Anders
Zerstörungen = Zerstörungen & c
Ende wenn
Ende wenn
Nächste
URLDECODE = Zerstörungen
Endfunktion
Die obige Funktion ist eine URL-Dekodierungsfunktion.
Funktion UTF2GB (UTFSTR)
Für dig = 1 bis len (utfstr)
'Wenn der Codierungstext von UTF8 mit%beginnt, wird er konvertiert
Wenn MID (UTFSTR, Dig, 1) =% dann
'UTF8 -Codierungstext ist größer als 8 und dann in chinesische Zeichen konvertiert
Wenn len (utfstr)> = dig+8 dann dann
Gbstr = gbstr & Convchinese (Mid (Utfstr, Dig, 9))
Dig = dig+8
Anders
Gbstr = gbstr & mid (utfstr, dig, 1)
Ende wenn
Anders
Gbstr = gbstr & mid (utfstr, dig, 1)
Ende wenn
Nächste
UTF2GB = GBTR
Endfunktion
'UTF8 -Codierungstext werden in chinesische Zeichen konvertiert
Funktion Convchinese (x)
A = Split (Mid (x, 2),%)
I = 0
J = 0
Für i = 0 bis Ubound (a)
A (i) = c16to2 (a (i))
Nächste
Für i = 0 bis Ubound (a) -1
Digs = instr (a (i), 0)
Unicode =
Für j = 1 bis digs-1
Wenn J = 1 dann
A (i) = rechts (a (i), len (a (i)) -digs)
Unicode = unicode & a (i)
Anders
I = i+1
A (i) = rechts (a (i), len (a (i))-2)
Unicode = unicode & a (i)
Ende wenn
Nächste
Wenn Len (c2to16 (unicode)) = 4 das
Convchinese = Convchinese & Chrw (int (& c2to16 (Unicode)))
Anders
Convchinese = Convchinese & chrt (int (& c2to16 (Unicode)))
Ende wenn
Nächste
Endfunktion
'Binärcode konvertieren in Hexadezimalcode
Funktion c2to16 (x)
I = 1
Für i = 1 bis len (x) Schritt 4
C2to16 = C2to16 & Hex (C2TO10 (MID (X, I, 4)))
Nächste
Endfunktion
'Binärcode konvertiert in Dezimalcode
Funktion c2to10 (x)
C2to10 = 0
Wenn x = 0 dann beenden Sie die Funktion
I = 0
Für i = 0 bis len (x) -1
Wenn mittel (x, len (x) -i, 1) = 1 dann c2to10 = c2to10+2^(i)
Nächste
Endfunktion
'Der Schriftcode wird in Binärcode konvertiert
Funktion c16to2 (x)
I = 0
Für i = 1 bis len (trim (x))
tempstr = c10to2 (cint (int (& h & mid (x, i, 1)))
Tun, während Len (tempstr) <4
Tempstr = 0 & tempstr
Schleife
C16to2 = c16to2 & tempstr
Nächste
Endfunktion
'Top -Code konvertieren in Binärcode
Funktion c10to2 (x)
mySign = sgn (x)
x = ABS (x)
Digs = 1
TUN
Wenn x <2^gräbt dann
Ausgang tun
Anders
Digs = Digs+1
Ende wenn
Schleife
tempnum = x
I = 0
Für i = digs bis 1 Schritt-1
Wenn tempnum> = 2^(i-1) dann
tempnum = tempnum-2^(i-1)
C10to2 = C10to2 & 1
Anders
C10to2 = C10to2 & 0
Ende wenn
Nächste
Wenn mySign = -1 dann c10to2 = -& c10to2
Endfunktion
Auf der normalen UTF-8-Seite können wir sie direkt verwenden:
Antwort.
Das heißt: UTF2GB (%E6%B1%89%e5%ad%97) = chinesische Zeichen
Aber wenn die aktuelle UTF8 -Seite eine GB -Codierung erhält (wie%ba%ba%d7%d6), wie können wir sie in chinesische Zeichen umwandeln? Zu diesem Zeitpunkt wird die Decodierungsfunktion des oben genannten Urldecode (ENSTR) verwendet, aber es sollte nicht direkt verwendet werden.
<%
Sitzung.CodePage = 936 'Zwangskonvertierung nach unter GB2312
Dim MyKey: MyKey = UrldeCode (%ba%ba%d7%d6) 'GB Cod String
Sitzung.CodePage = 65001 'Zurück die Seite zurück zur UTF-8-Codierung
Antwort.Write (MyKey)
%>
Zu diesem Zeitpunkt habe ich chinesische Charaktere. Wie wäre es, einfach daran zu denken, diese Seite beim nächsten Mal in der Entfernung zu folgen?