In der täglichen Arbeit der Front-End-Entwicklung befassen wir uns häufig mit HTML, JavaScript, CSS und anderen Sprachen. Wie eine echte Sprache hat auch die Computersprache Alphabet, Grammatik, Lexics, Codierungsmethoden usw. Hier werde ich kurz über die Codierungsprobleme sprechen, die häufig in der täglichen Arbeit von Front-End-HTML und JavaScript stoßen.
In Computern werden die von uns gespeicherten Informationen durch Binärcode dargestellt. Was wir über die Konvertierung von Symbolen wie englische und chinesische Zeichen wissen, die auf dem Bildschirm angezeigt werden, und dem für die Speicherung verwendeten Binärcode ist eine Codierung.
Es sind zwei grundlegende Konzepte zu erklären, Charset und Charaktercodierung:
Charset, ein Zeichensatz, dh eine Tabelle der Kartierung von Beziehungen zwischen einem Symbol und einer Zahl, dh festgestellt, dass 107 das 'a' von Koubei, 21475 der "Mund" des Mundwortworts ist und verschiedene Tabellen unterschiedliche Kartierungsbeziehungen haben, z. B. ASCII, GB2312, Unicode. Durch diese Mapping -Tabelle von Zahlen und Zeichen können wir eine binäre dargestellte Zahl in ein bestimmtes Zeichen umwandeln.
Gramter -Codierung, Codierungsmethode. Sollten wir beispielsweise für die Nummer 21475, die "portiert" werden sollte, /U5K3E3 verwenden, um es darzustellen, oder%E5%8f%A3, um sie darzustellen? Dies wird durch Zeichenkodierung bestimmt.
Für Saiten wie 'cuoxin.com' sind sie häufig verwendete Charaktere für Amerikaner. Sie haben einen Zeichensatz namens ASCII formuliert, wobei der vollständige Name der amerikanische Standard -Informationscode für den Austausch ist. Die 128 Zahlen 0127 (zur 7. Leistung von 2, 0 × 00-0 × 7f), die die häufig verwendeten 128 Zeichen wie 123ABC darstellen. Insgesamt gibt es insgesamt 7 Bits, und das erste ist das Vorzeichenbit, mit dem der Komplement -Inverse Code verwendet werden sollte, um negative Zahlen oder etwas darzustellen. Es gibt insgesamt 8 Bit, um ein Byte zu bilden. Die Amerikaner waren damals ein wenig geizig. Wenn sie von Anfang an ein Byte mit 16 Bit oder 32 Bit entworfen hätten, würde es auf der Welt viele Probleme geben. Zu dieser Zeit dachten sie jedoch wahrscheinlich, dass 8 Bit ausreicht, was 128 verschiedene Charaktere darstellen könnte!
Da Computer von Amerikanern gemacht werden, sparen sie sich selbst und kodieren alle Symbole, die sie verwenden, was sie sehr bequem zu verwenden. Aber als Computer internationalisiert wurden, tritt das Problem auf. Nehmen Sie China als Beispiel. Chinesische Charaktere sind nur Zehntausende. Was soll ich tun?
Das vorhandene 8-Bit-ein Byte-System ist die Grundlage, es kann nicht zerstört werden, es kann nicht auf 16 Bits oder etwas geändert werden. Andernfalls sind die Änderungen zu groß, sodass Sie nur einen anderen Weg einschlagen können: Verwenden Sie mehrere ASCII-Zeichen, um ein anderes Zeichen darzustellen, dh MBCs (Multi-Byte-Zeichensystem, Multi-Byte-Zeichensystem).
Mit diesem Konzept von MBCs können wir mehr Charaktere darstellen. Wenn wir beispielsweise 2 ASCII -Zeichen verwenden, gibt es 16 Bit, und theoretisch gibt es 2 Zeichen für die Kraft von 16 65.536 Zeichen. Aber wie werden diese Codierungen den Zeichen zugeordnet? Zum Beispiel ist die Unicode -Codierung von "Mund" "Mund" 21475. Wer hat sich entschieden? Das Charakter -Set, das gerade eingeführt wird. ASCII ist der grundlegendste Zeichensatz. Darüber hinaus haben wir Charaktersätze, die GB2312 und Big5 für MBCs in vereinfachtem chinesischem und traditionellem Chinesisch usw. ähnlich sind. Schließlich gab es eine Institution namens Unicode Consortium, die beschlossen hat, ein Zeichensatz (UCs, universelle Zeichensatz) einschließlich aller Zeichen und die entsprechende Codierungsmethode, nämlich Unicode, zu erstellen. Seit 1991 hat es die erste Ausgabe der Unicode International Standards, ISBN 0-321-18578-1 veröffentlicht, und die Internationale Organisation für Standardisierung ISO hat auch an der Anpassung dieser ISO/IEC 10646: Das universelle Charakter-Set teilgenommen. Kurz gesagt, Unicode ist ein Zeichenstandard, der im Grunde genommen alle vorhandenen Symbole auf der Erde abdeckt. Es wird jetzt immer häufiger verwendet. Der ECMA -Standard sieht auch vor, dass die internen Zeichen der JavaScript -Sprache den Unicode -Standard verwenden (dies bedeutet, dass JavaScript -Variablennamen, Funktionsnamen usw. auf Chinesisch zulässig sind!).
Für Entwickler in China können sie mehr Probleme wie die Konvertierung zwischen GBK, GB2312 und UTF-8 stoßen. Streng genommen ist diese Aussage nicht sehr genau. GBK und GB2312 sind Zeichensätze (Charsets), während UTF-8 eine Codierungsmethode (Zeichencodierung) ist, die eine Codierungsmethode von UCS-Zeichensätzen im Unicode-Standard ist. Da Webseiten mit Unicode-Zeichensätzen hauptsächlich mit UTF-8 codiert sind, stellen die Leute sie häufig zusammen, was tatsächlich ungenau ist.
Mit Unicode, zumindest bevor die menschliche Zivilisation Aliens begegnet, ist dies ein Hauptschlüssel. Verwenden Sie sie also. Die am häufigsten verwendete Unicode-Codierungsmethode ist UTF-8 (8-Bit-UCS/Unicode-Transformationsformat), das mehrere besonders gute Dinge hat:
Codierung von UCS -Charakter -Set, universeller weltweit
Es handelt
Der zweite Punkt ist ein großer Vorteil, wodurch die Systeme, die Pure ASCII -Codierung zuvor kompatibel verwendet haben, und keine zusätzliche Speicherung hinzugefügt werden (vorausgesetzt, dass eine lange Codierungsmethode festgelegt ist, besteht jedes Zeichen aus 2 Bytes, dann wird der Speicherplatz, der von ASCII -Zeichen besetzt ist, zu diesem Zeitpunkt verdoppelt).