Ich habe mich in den letzten Tagen mit der UTF-8-Kodierung beschäftigt und bin so verwirrt, dass ich meine Meinung mit Ihnen besprechen werde. Willkommen zur Genehmigung. Das Folgende sind meine Gedanken. Wenn etwas nicht stimmt, können Sie mich gerne aufklären und mir helfen, es aufzuzeigen.
Verwandte Exkurse:
1. Betriebssystem
Das Fenstersystem ist intern ausschließlich Unicode. Ordnernamen, Dateinamen usw. sind alle Unicode und können in jedem Sprachsystem normal angezeigt werden.
2. Eingabemethode:
Die Pinyin-Ausgabe von Microsoft ist Unicode und die Ausgabe von Smart ABC ist vereinfachtes Chinesisch (daher kann Smart ABC überhaupt nicht in Systemen mit nicht vereinfachtem Chinesisch verwendet werden und kann nur in Englisch eingegeben werden).
3. Textbereich der Webseite
Der Textbereich der Webseite wird in Unicode angezeigt. Was auch immer Sie eingeben, wird angezeigt. Einige in Flash erstellte Eingabefelder funktionieren jedoch nicht.
4. Access2000
Die im Zugriff gespeicherten Daten sind Unicode und können in jedem Sprachsystem angezeigt werden.
Wenn einige Zeichen in der Datenansicht nicht normal angezeigt werden, liegt das daran, dass die für die Anzeige verwendete Schriftart keine Unicode-Schriftart ist.
Wechseln Sie zur Schriftart Arial Unicode MS, um alles anzuzeigen. (Hilfe aufrufen, suchen, Unicode eingeben, Anweisungen sind verfügbar)
5. Wort
Konvertierung zwischen traditionellem Chinesisch und vereinfachtem Chinesisch in Word Nach der Konvertierung von vereinfachtem Chinesisch in traditionelles Chinesisch ist der interne Code immer noch vereinfachtes Chinesisch. Tatsächlich handelt es sich nur um traditionelle chinesische Zeichen in vereinfachtem Chinesisch.
6. ASP ist intern Unicode und der gesamte Text wird in Unicode gespeichert. Bei Bedarf in den angegebenen Zeichensatz konvertieren.
Lassen Sie uns zunächst das Fazit ziehen:
<%@ codepage=936%>Vereinfachtes Chinesisch
<%@ codepage=950%>Traditionelles Chinesisch
<%@ codepage=65001%>UTF-8
Die Codepage gibt die Codierung an, in der IIS die übergebene Zeichenfolge liest (Formularübermittlung, Adressleistenübertragung usw.).
Gibt außerdem die Kodierung an, in die alle Textvariablen von Unicode konvertiert werden.
Außerdem wird die Kodierung angegeben, in die die aus der Datenbank abgerufenen Daten von Unicode konvertiert werden. (Beachten Sie dies, es ist sehr wichtig.)
Schlüsselwörter:
Lesen: Eine Zeichenfolge. Wenn sie in vereinfachtem Chinesisch gelesen wird, besteht sie aus einigen Zeichen. Wenn sie in traditionellem Chinesisch gelesen wird, sind es einige Zeichen. Die Codierung der Zeichenfolge selbst hat sich nicht geändert.
Konvertierung: Das System konvertiert beispielsweise aktiv das „化“-Zeichen von Unicode in das „化“-Zeichen von Big5, der interne Code wird zum Big5-Zeichen. Wenn in Big5 kein entsprechendes Wort vorhanden ist, wird die Unicode-Form beibehalten (&#xxxx;)
Vereinfachtes Chinesisch: Sechs Schlussfolgerungen
Unicode-Hexadezimalform: sechs Schlussfolgerungen
Unicode-Dezimalform: sechs Schlussfolgerungen
Das Folgende ist der Codierungskonvertierungsprozess, über den ich spekuliert habe:
Client: Eingabemethode Unicode – Eingabefeld Unicode – Konvertierung von Unicode in die entsprechende Codierung durch charset () – Formular zum Senden der Codierung
Serverseite: IIS dekodiert das Formular – liest entsprechend der durch die Codepage angegebenen Kodierung – konvertiert in den entsprechenden Unicode – kann mit request(““) gelesen werden – führt einige Verarbeitungen durch – speichert in der Datenbank in Unicode-Kodierung
Serverseitig: Lesen Sie die Unicode-Daten aus der Datenbank und konvertieren Sie sie in die durch die Codepage angegebene Codierung. --- Quellcode generieren. Der IE liest ihn entsprechend dem Zeichensatz und zeigt ihn an.
Hier einige Beispiele:
Beispiel 1:
Angenommen, es gibt drei ASP-Seiten, eine typische Nachrichtenseite:
1.write.asp ist ein einfaches Eingabeformular und wird an add.asp gesendet.
<META http-equiv="Content-Type" content="text/html; charset=big5">
2.add.asp empfängt Nachrichten und speichert sie in der Datenbank
<%@ codepage=936%>
3.read.asp ruft Nachrichten aus der Datenbank ab und zeigt sie an.
<%@ codepage=936%> charset=GB2312 oder
<%@ codepage=950%> charset=big5
Sie können raten. Ich habe die Microsoft Pinyin-Eingabemethode verwendet, um „Hua Liu Discussion“ in write.asp einzugeben. Was wird am Ende in read.asp angezeigt?
Ist Ihnen schwindlig? Lassen Sie es uns von Anfang an analysieren.
Beispiel 2:
Was passiert, wenn wir <%@ codepage=936%> in add.asp in Beispiel 1 in <%@ codepage=950%> ändern?
Was hast du hier gefunden?
1. Wenn sich der Eingabetext vom entsprechenden Zeichensatz unterscheidet, werden die Zeichen nach der Konvertierung möglicherweise im Unicode-Format angezeigt. Hier erfahren Sie, warum. Der gesamte Prozess bleibt von nun an erhalten.
2. Die Codepage in Add.asp bestimmt den in der Datenbank gespeicherten Text und welche Sprache Unicode entspricht. Beispiel: Codepage=936.
Dann speichert die Datenbank vereinfachtes Chinesisch Unicode (die Datenbank erhält das vereinfachte Chinesisch-System zurück, alles ist normal),
Codepage=950 speichert traditionellen chinesischen Unicode (es wäre falsch, das vereinfachte chinesische System zurückzunehmen).
3. Achten Sie auf den Änderungsprozess der Saite:
1) Eingabemethode --- CharsetUnicode ---- gibt die Zuordnung des Zeichensatzes an
2)Charset----Formularcodierung, einfache Codierung der Zeichenfolge
3) Der umgekehrte Prozess des vorherigen Schritts der Formulardekodierung, die beiden Schritte werden versetzt.
4) Die Zeichenfolge à Drücken Sie die Codepage, um die Zeichenfolge zu lesen, und die Zeichenfolge hat sich nicht geändert. Dieser Schritt kann zu „Missverständnissen beim Lesen“ führen.
5) Konvertieren Sie in den entsprechenden von der Unicode-Codeseite angegebenen Zeichensatz ---- Unicode-Zuordnung
6) Zwischenverarbeitung, keine Änderung in der Datenbank, direkte Eingabe im Unicode-Format
7) Drücken Sie Codepage, um die in der Datenbank angegebene Unicode----Codepage-Zeichensatzzuordnung zu lesen
8) Es zeigt, dass sich die aus dem durch Charset angegebenen Zeichensatz gelesene Zeichenfolge nicht geändert hat.
Lassen Sie uns anhand von Beispiel 1 veranschaulichen:
Beispiel 2:
Schwindlig. Lassen Sie uns nun das Wissen nutzen.
Fall 1.
Der Code, der unter dem vereinfachten Chinesisch-System gut läuft, wird in der Datenbank verstümmelt, wenn er in einem fremden Raum platziert wird, und die Originaldaten werden ebenfalls verstümmelt.
Analyse: Da die meisten Leute normalerweise das vereinfachte Chinesisch-System verwenden, ist die Standardcodepage=936, also macht es nichts, wenn nicht jeder es schreibt.
Aber wenn wir ins Ausland gehen, entstehen Platzprobleme. Der Unicode in der Datenbank wurde in die englische Codierung konvertiert. Nachdem das ursprüngliche vereinfachte Chinesisch in der Datenbank in Englisch konvertiert wurde, ist die GB-Anzeige daher natürlich verstümmelt.
Wie im Bild zu sehen ist, wird der neu eingegebene Text normal angezeigt, der englische Unicode ist jedoch in der Datenbank gespeichert.
Lösung: <%@codepage=936%> zu allen hinzufügen.
Der gesamte Prozess umfasst lediglich die Konvertierung zwischen vereinfachtem Chinesisch und dem entsprechenden Unicode.
Fall 2:
Was soll ich tun, wenn ich Code und Daten für vereinfachtes Chinesisch in die vollständige Version für traditionelles Chinesisch konvertieren möchte?
Analyse: 1. Die Kodierung aller Codedateien wird auf Big5 geändert und die Datei selbst wird in traditionellem Chinesisch gespeichert.
2. <%@ codepage=936 %>
3.Charset=big5
4. Die Zugriffsversion spielt keine Rolle, da die Daten im Zugriff Unicode sind.
5. Ok, der Code kann unter dem rein traditionellen chinesischen System ausgeführt werden.
6. Verbleibende Probleme: Beim Lesen der Originaldaten für vereinfachtes Chinesisch werden einige Fragezeichen angezeigt. Der Effekt ist der gleiche wie beim 950-Wert in Beispiel 1, Big5-Anzeige. Da der Unicode des vereinfachten Chinesisch in traditionelles Chinesisch konvertiert wird, sind einige Zeichen nicht im traditionellen Chinesisch enthalten, sodass Fragezeichen angezeigt werden.
7. Lösung: Verwenden Sie eine temporäre ASP-Seite, Codepage=65001, lesen Sie sie als Unicode für vereinfachtes Chinesisch, konvertieren Sie sie mit einer Unicode->Big5-Funktion in traditionelles Chinesisch und schreiben Sie sie dann zurück in die Datenbank. Das sollte funktionieren, oder?
Die beiden Fälle wurden von mir vollständig theoretisch abgeleitet und nicht bestätigt.
Kritik und Korrekturen sind willkommen, wenn Sie ähnliche Erfahrungen gemacht haben.