Der Inhalt dieses Artikels befasst sich mit dem Unterschied zwischen UTF-8 und GBK UTF8 GB2312. Freunde in Not können sich darauf beziehen.
UTF-8: Unicode TransformationFormat-8bit, BOM ist zulässig, enthält aber normalerweise keine BOM. Es handelt sich um eine Multibyte-Kodierung zur Lösung internationaler Zeichen. Sie verwendet 8 Bit (d. h. ein Byte) für Englisch und 24 Bit (drei Byte) für Chinesisch. UTF-8 enthält Zeichen, die von allen Ländern der Welt benötigt werden. Es handelt sich um eine internationale Kodierung und eine große Vielseitigkeit. UTF-8-kodierter Text kann in Browsern in verschiedenen Ländern angezeigt werden, die den UTF8-Zeichensatz unterstützen. Wenn es sich beispielsweise um eine UTF8-Codierung handelt, kann Chinesisch auch im englischen IE von Ausländern angezeigt werden, und sie müssen das chinesische Sprachunterstützungspaket des IE nicht herunterladen.
GBK ist ein Standard, der nach Erweiterung auf Basis des nationalen Standards GB2312 mit GB2312 kompatibel ist. Die Textkodierung von GBK wird durch Doppelbytes dargestellt, das heißt, sowohl chinesische als auch englische Zeichen werden durch Doppelbytes dargestellt. Um chinesische Zeichen zu unterscheiden, werden die höchsten Bits auf 1 gesetzt. GBK enthält alle chinesischen Zeichen und ist eine nationale Kodierung. Es ist weniger vielseitig als UTF8, belegt jedoch eine größere Datenbank als GBK.
Unicode-Kodierung muss verwendet werden, um GBK, GB2312 usw. in UTF8 zu konvertieren:
GBK, GB2312--Unicode--UTF8
UTF8--Unicode--GBK, GB2312
pCSS5 ist einfach funktional:
1. GBK bezieht sich normalerweise auf die GB2312-Kodierung, die nur vereinfachte chinesische Zeichen
2.utf bezieht sich normalerweise auf UTF-8, unterstützt vereinfachte chinesische Schriftzeichen, traditionelle chinesische Schriftzeichen, Englisch, Japanisch, Koreanisch und andere Sprachen (unterstützt eine breitere Sprache). Zeichenbereich)
3. Im Allgemeinen werden in China utf-8 und gb2312 verwendet. Wählen Sie entsprechend Ihren eigenen Anforderungen Die spezifischen Details sind wie folgt: Für eine Website oder ein Forum, wenn mehr englische Zeichen vorhanden sind, wird empfohlen, UTF-8 zu verwenden, um Platz zu sparen. Allerdings unterstützen viele Forum-Plug-ins mittlerweile generell nur GBK.Detaillierte Erklärung des Unterschieds zwischen Codierungen
Einfach ausgedrückt sind Unicode, GBK und Big Five die codierten Werte, und utf-8, uft-16 usw. sind die Ausdrücke dieses Werts. Die vorherigen drei Codes sind kompatibel. Für dasselbe chinesische Zeichen sind die drei Codewerte völlig unterschiedlich. Beispielsweise unterscheidet sich der Uncode-Wert von „Chinesisch“ von dem von gbk. Angenommen, der Uncode ist a040 und gbk ist b030, und der uft-8-Code ist die Form, in der dieser Wert ausgedrückt wird. Der UTF-8-Code ist nur für Uncode vollständig organisiert. Wenn GBK in UTF-8 konvertiert werden möchte, muss er zuerst in Uncode und dann in UTF-8 konvertiert werden, und das ist in Ordnung.
Dies ist eine interessante Lektüre, die von Programmierern für Programmierer geschrieben wurde. Der sogenannte Spaß bedeutet, dass Sie einige bisher unklare Konzepte leicht verstehen und Ihr Wissen verbessern können, was dem Upgrade in einem RPG-Spiel ähnelt. Die Motivation für die Organisation dieses Artikels sind zwei Fragen:
Frage 1: Verwenden Sie „Speichern unter“ von Windows Notepad, um in GBK, Unicode, Unicode Big Endian und UTF-8-Konvertierung zu speichern zwischen diesen Kodierungsmethoden. Es ist auch eine TXT-Datei. Wie erkennt Windows die Kodierungsmethode?
Frage 2: Ich habe kürzlich im Internet ein ConvertUTF.c gesehen, das die gegenseitige Konvertierung der Kodierungsmethoden UTF-32, UTF-16 und UTF-8 realisiert. Ich kenne mich bereits mit Kodierungsmethoden wie Unicode-Kodierung (UCS2), GBK und UTF-8 aus. Aber dieses Programm verwirrt mich ein wenig und ich kann mich nicht erinnern, welche Beziehung zwischen UTF-16 und UCS2 besteht.
Nachdem ich die relevanten Informationen überprüft hatte, konnte ich diese Probleme endlich klären und auch einige Details über Unicode erfahren. Schreiben Sie einen Artikel und senden Sie ihn an Freunde, die ähnliche Fragen haben. Dieser Artikel ist so einfach wie möglich geschrieben, aber die Leser müssen wissen, was Bytes und was Hexadezimalzahlen sind.
Big Endian und Little Endian sind unterschiedliche Möglichkeiten für die CPU, Multibyte-Zahlen zu verarbeiten. Beispielsweise ist die Unicode-Kodierung des Zeichens „汉“ 6C49. Sollte beim Schreiben in eine Datei also 6C vorne oder 49 vorne geschrieben werden? Wenn 6C vorne steht, handelt es sich um Big Endian. Steht 49 davor, handelt es sich um Little Endian.
1. Zeichenkodierung, interner Code und übrigens chinesische Zeichenkodierung
Zeichen müssen kodiert werden, bevor sie vom Computer verarbeitet werden können. Die vom Computer verwendete Standardcodierungsmethode ist der interne Code des Computers. Frühe Computer verwendeten die 7-Bit-ASCII-Kodierung, um chinesische Zeichen zu verarbeiten. Programmierer entwickelten GB2312 für vereinfachtes Chinesisch und big5 für traditionelles Chinesisch.
GB2312 (1980) enthält insgesamt 7445 Zeichen, darunter 6763 chinesische Schriftzeichen und 682 andere Symbole. Der interne Codebereich des chinesischen Zeichenbereichs reicht von B0-F7 im High-Byte, A1-FE im Low-Byte und die belegten Codebits sind 72*94=6768. Darunter sind 5 offene Stellen D7FA-D7FE.
GB2312 unterstützt zu wenige chinesische Schriftzeichen. Die Erweiterungsspezifikation für chinesische Schriftzeichen GBK1.0 aus dem Jahr 1995 umfasst 21.886 Symbole, die in den Bereich für chinesische Schriftzeichen und den Bereich für grafische Symbole unterteilt sind. Der chinesische Schriftzeichenbereich umfasst 21003 Zeichen.
Von ASCII, GB2312 bis GBK sind diese Kodierungsmethoden abwärtskompatibel, d. h. das gleiche Zeichen hat in diesen Schemata immer die gleiche Kodierung, und spätere Standards unterstützen mehr Zeichen. In diesen Kodierungen können Englisch und Chinesisch einheitlich verarbeitet werden. Die Unterscheidung zwischen chinesischer Codierung besteht darin, dass das höchste Bit des High-Bytes nicht 0 ist. GB2312 und GBK gehören, wie Programmierer sie nennen, beide zu Doppelbyte-Zeichensätzen (DBCS).
GB18030 im Jahr 2000 ist der offizielle nationale Standard, der GBK1.0 ersetzt hat. Dieser Standard umfasst 27.484 chinesische Schriftzeichen sowie Tibetisch, Mongolisch, Uigurisch und andere wichtige Sprachen ethnischer Minderheiten. In Bezug auf das Vokabular chinesischer Schriftzeichen fügt GB18030 6582 chinesische Schriftzeichen der CJK-Erweiterung A (Unicode-Code 0x3400-0x4db5) zu den 20902 chinesischen Schriftzeichen von GB13000.1 hinzu, sodass insgesamt 27484 chinesische Schriftzeichen enthalten sind.
CJK bedeutet China, Japan und Korea. Um Codebits einzusparen, kodiert Unicode Zeichen in den drei Sprachen China, Japan und Korea einheitlich. GB13000.1 ist die chinesische Version von ISO/IEC 10646-1 und entspricht Unicode 1.1.
Die Kodierung von GB18030 verwendet Einzelbyte-, Doppelbyte- und 4-Byte-Schemata. Darunter sind Einzelbyte, Doppelbyte und GBK vollständig kompatibel. Das Codebit der 4-Byte-Kodierung enthält 6582 chinesische Zeichen der CJK-Erweiterung A. Beispiel: Die Kodierung von UCS 0x3400 in GB18030 sollte 8139EF30 sein, und die Kodierung von UCS 0x3401 in GB18030 sollte 8139EF31 sein.
Microsoft stellt ein Upgrade-Paket für GB18030 bereit, dieses Upgrade-Paket stellt jedoch nur einen neuen Satz Schriftarten bereit, die 6582 chinesische Zeichen der CJK-Erweiterung A: New Song Dynasty-18030 unterstützen, und ändert den internen Code nicht. Der interne Code von Windows ist immer noch GBK.
Hier einige Details:
Der Originaltext von GB2312 ist immer noch der Standortcode. Vom Standortcode bis zum inneren Code muss A0 zum High-Byte bzw. Low-Byte hinzugefügt werden .
Für jede Zeichenkodierung wird die Reihenfolge der Kodierungseinheiten durch das Kodierungsschema festgelegt, unabhängig von Endian. Beispielsweise ist die Codierungseinheit von GBK ein Byte, und zwei Bytes werden zur Darstellung eines chinesischen Zeichens verwendet. Die Reihenfolge dieser beiden Bytes ist fest und wird nicht von der CPU-Bytereihenfolge beeinflusst. Die Kodierungseinheit von UTF-16 ist Wort (Doppelbyte). Die Reihenfolge zwischen Wörtern wird durch das Kodierungsschema festgelegt. Nur die Byte-Anordnung innerhalb des Wortes wird durch Endian beeinflusst. UTF-16 wird später eingeführt.
Die höchsten Bits der beiden Bytes von GB2312 sind beide 1. Es gibt jedoch nur 128*128=16384 Codepunkte, die diese Bedingung erfüllen. Daher ist das höchste Bit des Low-Bytes von GBK und GB18030 möglicherweise nicht 1. Dies hat jedoch keinen Einfluss auf das Parsen des DBCS-Zeichenstroms: Beim Lesen des DBCS-Zeichenstroms können die nächsten beiden Bytes unabhängig davon als Doppelbyte codiert werden, solange ein Byte mit einem hohen Bit von 1 angetroffen wird Low-Byte. Was ist High-Position?
2. Unicode, UCS und UTF
Wie bereits erwähnt, sind die Kodierungsmethoden von ASCII, GB2312, GBK bis GB18030 abwärtskompatibel. Unicode ist nur mit ASCII kompatibel (genauer gesagt mit ISO-8859-1) und nicht mit GB-Code. Beispielsweise ist die Unicode-Kodierung des Zeichens „汉“ 6C49, während der GB-Code BABA ist.
Unicode ist ebenfalls eine Zeichenkodierungsmethode, aber es handelt sich um ein von einer internationalen Organisation entwickeltes Kodierungsschema, das alle Sprachen der Welt unterstützen kann. Der wissenschaftliche Name von Unicode lautet „UniversalMultiple-Octet Coded Character Set“ und wird als UCS bezeichnet. UCS kann als Abkürzung für „Unicode CharacterSet“ angesehen werden.
Laut Wikipedia (http://zh.wikipedia.org/wiki/): Historisch gesehen gab es zwei Organisationen, die versuchten, Unicode unabhängig zu entwerfen, nämlich die International Organization for Standardization (ISO) und einen Softwarehersteller Wirtschaftsverband (unicode.org). ISO entwickelte das ISO 10646-Projekt und das Unicode-Konsortium entwickelte das Unicode-Projekt.
Um 1991 erkannten beide Seiten, dass die Welt keine zwei inkompatiblen Zeichensätze brauchte. Also begannen sie, die Arbeit beider Parteien zusammenzuführen und gemeinsam eine einzige Codierungsliste zu erstellen. Ab Unicode2.0 verwendet das Unicode-Projekt dieselben Schriftarten und Schriftarten wie ISO 10646-1.
Beide Projekte existieren noch und veröffentlichen unabhängig voneinander ihre eigenen Standards. Die neueste Version des Unicode-Konsortiums ist Unicode 4.1.0 aus dem Jahr 2005. Der neueste ISO-Standard ist ISO 10646-3:2003.
UCS legt nur fest, wie kodiert wird, legt jedoch nicht fest, wie diese Kodierung übertragen oder gespeichert wird. Die UCS-Kodierung des Zeichens „Chinesisch“ ist beispielsweise 6C49. Ich kann 4 ASCII-Zahlen verwenden, um diese Kodierung zu übertragen und zu speichern. Ich kann auch die UTF-8-Kodierung verwenden: 3 aufeinanderfolgende Bytes E6 B189, um sie darzustellen. Der Schlüssel liegt darin, dass beide Parteien der Kommunikation zustimmen müssen. UTF-8, UTF-7 und UTF-16 sind allesamt weithin akzeptierte Lösungen. Ein besonderer Vorteil von UTF-8 ist die vollständige Kompatibilität mit ISO-8859-1. UTF ist die Abkürzung für „UCS Transformation Format“.
IETFs RFC2781 und RFC3629 beschreiben die Kodierungsmethoden von UTF-16 und UTF-8 klar, klar und rigoros im einheitlichen RFC-Stil. Ich vergesse immer, dass IETF die Abkürzung für Internet Engineering Task Force ist. Der von der IETF gepflegte RFC ist jedoch die Grundlage für alle Spezifikationen im Internet.
2.1, interner Code und Codepage
Derzeit unterstützt der Windows-Kernel bereits den Unicode-Zeichensatz, sodass der Kernel alle Sprachen weltweit unterstützen kann. Da jedoch eine große Anzahl vorhandener Programme und Dokumente eine bestimmte Sprachkodierung wie GBK verwenden, ist es für Windows unmöglich, die vorhandene Kodierung nicht zu unterstützen und alle Unicode zu verwenden.
Windows verwendet Codepages, um sich an verschiedene Länder und Regionen anzupassen. Die Codepage kann als der zuvor erwähnte interne Code verstanden werden. Die GBK entsprechende Codepage ist CP936.
Microsoft hat auch die Codepage für GB18030 definiert: CP54936. Da GB18030 jedoch über einige 4-Byte-Codierungen verfügt und die Windows-Codepage nur Einzelbyte- und Doppelbyte-Codierungen unterstützt, kann diese Codepage nicht wirklich verwendet werden.
3. UCS-2, UCS-4, BMP
UCS hat zwei Formate: UCS-2 und UCS-4. Wie der Name schon sagt, ist UCS-2 mit zwei Bytes kodiert und UCS-4 mit 4 Bytes (tatsächlich werden nur 31 Bits verwendet, das höchste Bit muss 0 sein). Machen wir ein paar einfache Mathe-Spiele:
UCS-2 hat 2^16=65536 Codepunkte und UCS-4 hat 2^31=2147483648 Codepunkte.
UCS-4 ist entsprechend dem höchsten Byte in 2^7=128 Gruppen unterteilt, wobei das höchste Bit 0 ist. Jede Gruppe ist basierend auf dem nächsthöheren Byte in 256 Ebenen unterteilt. Jede Ebene ist basierend auf dem dritten Byte in 256 Zeilen (Zeilen) unterteilt, und jede Zeile enthält 256 Zellen. Natürlich unterscheiden sich Zellen in derselben Zeile nur im letzten Byte, der Rest ist gleich.
Plane 0 der Gruppe 0 wird Basic Multilingual Plane oder BMP genannt. Oder in UCS-4 werden die Codebits, bei denen die oberen beiden Bytes 0 sind, als BMP bezeichnet.
Entfernen Sie die ersten beiden Nullbytes aus dem BMP von UCS-4, um UCS-2 zu erhalten. Fügen Sie vor den beiden Bytes von UCS-2 zwei Nullbytes hinzu, um den BMP von UCS-4 zu erhalten. In der aktuellen UCS-4-Spezifikation werden keine Zeichen außerhalb des BMP zugewiesen.
4. UTF-Kodierung
UTF-8 kodiert UCS in 8-Bit-Einheiten. Die Kodierungsmethode von UCS-2 zu UTF-8 ist wie folgt:
UCS-2-Kodierung (hexadezimal) UTF-8-Byte-Stream (binär)
0000 - 007F 0xxxxxxx
0080 - 07FF 110xxxxx 10xxxxxx
0800 - FFFF 1110xxxx 10xxxxxx 10xxxxxx
Zum Beispiel ist die Unicode-Kodierung des „chinesischen“ Zeichens 6C49. 6C49 liegt zwischen 0800 und FFFF, daher müssen Sie eine 3-Byte-Vorlage verwenden: 1110xxxx 10xxxxxx10xxxxxx . Das Schreiben von 6C49 im Binärformat lautet: 0110 110001 001001. Wenn wir diesen Bitstrom verwenden, um x in der Vorlage zu ersetzen, erhalten wir: 1110011010110001 10001001, was E6 B1 89 ist.
Leser können Notepad verwenden, um zu testen, ob unsere Codierung korrekt ist. Es ist zu beachten, dass UltraEdit beim Öffnen einer UTF-8-codierten Textdatei automatisch in UTF-16 konvertiert, was zu Verwirrung führen kann. Sie können diese Option in den Einstellungen deaktivieren. Ein besseres Tool ist Hex Workshop.
UTF-16 kodiert UCS in 16-Bit-Einheiten. Für UCS-Codes kleiner als 0x10000 entspricht die UTF-16-Codierung der 16-Bit-Ganzzahl ohne Vorzeichen, die dem UCS-Code entspricht. Für UCS-Codes nicht kleiner als 0x10000 ist ein Algorithmus definiert. Da jedoch der BMP des tatsächlich verwendeten UCS2 oder UCS4 kleiner als 0x10000 sein muss, kann vorerst davon ausgegangen werden, dass UTF-16 und UCS-2 grundsätzlich gleich sind. Allerdings handelt es sich bei UCS-2 nur um ein Codierungsschema, und für die eigentliche Übertragung wird UTF-16 verwendet, sodass die Frage der Bytereihenfolge berücksichtigt werden muss.
5. UTF-Bytereihenfolge und BOM
UTF-8 verwendet Bytes als Codierungseinheit und es gibt kein Problem mit der Bytereihenfolge. UTF-16 verwendet zwei Bytes als Kodierungseinheit. Bevor Sie einen UTF-16-Text interpretieren, müssen Sie zunächst die Bytereihenfolge jeder Kodierungseinheit verstehen. Beispielsweise ist die Unicode-Kodierung von „Kui“ 594E und die Unicode-Kodierung von „B“ ist 4E59. Wenn wir den UTF-16-Byte-Stream „594E“ empfangen, ist das „Ku“ oder „B“?
Die empfohlene Methode zum Markieren der Bytereihenfolge in der Unicode-Spezifikation ist die Stückliste. Bei der Stückliste handelt es sich nicht um die Stücklistenliste der „Stückliste“, sondern um die Byte-Reihenfolgemarkierung. BOM ist eine kleine clevere Idee:
In der UCS-Codierung gibt es ein Zeichen namens „ZERO WIDTH NO-BREAKSPACE“, und seine Codierung ist FEFF. FFFE ist ein Zeichen, das in UCS nicht existiert und daher in der tatsächlichen Übertragung nicht erscheinen sollte. Die UCS-Spezifikation empfiehlt, dass wir vor der Übertragung des Bytestreams die Zeichen „ZERO WIDTH NO-BREAK SPACE“ übertragen.
Wenn der Empfänger FEFF empfängt, bedeutet dies, dass der Bytestrom Big-Endian ist. Wenn er FFFE empfängt, bedeutet dies, dass der Bytestrom Little-Endian ist. Daher wird das Zeichen „ZERO WIDTH NO-BREAK SPACE“ auch BOM genannt.
UTF-8 erfordert keine Stückliste zur Angabe der Bytereihenfolge, kann die Stückliste jedoch zur Angabe der Kodierungsmethode verwenden. Die UTF-8-Kodierung des Zeichens „ZERO WIDTH NO-BREAKSPACE“ ist EF BB BF (Leser können sie mit der zuvor eingeführten Kodierungsmethode überprüfen). Wenn der Empfänger also einen Bytestrom empfängt, der mit EF BBBF beginnt, weiß er, dass dieser UTF-8-codiert ist.
Windows verwendet BOM, um die Kodierungsmethode von Textdateien zu markieren.
6. Weitere Referenzmaterialien
Das Hauptreferenzmaterial für diesen Artikel ist „Kurzer Überblick über ISO-IEC 10646 und Unicode“ (http://www.nada.kth.se/i18n/ucs/ unicode -iso10646-oview.html).
Ich habe auch zwei Informationen gefunden, die gut aussahen, aber weil ich bereits die Antworten auf meine ersten Fragen hatte, habe ich sie nicht gelesen:
"Unicode verstehen Eine allgemeine Einführung in den Unicode-Standard" (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter04a)
"Grundlagen der Zeichensatzkodierung verstehen". Zeichensatzkodierungen und Legacy-Kodierungen“ (http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&item_id=IWS-Chapter03)
Ich habe UTF-8, UCS-2, GBK Mutual geschrieben Konvertierte Pakete, einschließlich Versionen mit und ohne Windows-API. Wenn ich in Zukunft Zeit habe, werde ich es klären und auf meine persönliche Homepage stellen
Ich habe mit dem Schreiben dieses Artikels begonnen, nachdem ich über alle Themen klar nachgedacht hatte, und dachte, ich könnte ihn in einer Weile fertigstellen. Unerwarteterweise dauerte es lange, über den Wortlaut nachzudenken und die Details zu überprüfen, und ich schrieb es von 13:30 bis 21:00 Uhr nachmittags. Ich hoffe, dass einige Leser davon profitieren können.
Anhang 1 Lassen Sie uns über den Standortcode, GB2312, den internen Code und die Codepage sprechen
Einige Freunde haben noch Fragen zu diesem Satz im Artikel:
„Der Originaltext von GB2312 ist immer noch der Standort.“ Code. Um zum internen Code zu gelangen, müssen Sie A0 zum High-Byte bzw. Low-Byte hinzufügen „GB2312“ bezieht sich auf den nationalen Standard von 1980. Standard „Grundlegender Satz chinesischer codierter Zeichensätze für den nationalen Standard-Informationsaustausch der Volksrepublik China GB2312-80“. Dieser Standard verwendet zwei Zahlen zur Kodierung chinesischer Schriftzeichen und chinesischer Symbole. Die erste Zahl wird „Fläche“ und die zweite Zahl „Bit“ genannt. Daher wird er auch Standortcode genannt. Die Bereiche 1–9 sind chinesische Symbole, die Bereiche 16–55 sind chinesische Schriftzeichen der ersten Ebene und die Bereiche 56–87 sind chinesische Schriftzeichen der zweiten Ebene. Jetzt verfügt Windows auch über eine Standorteingabemethode. Geben Sie beispielsweise 1601 ein, um „ah“ zu erhalten. (Diese Standorteingabemethode kann die hexadezimalen GB2312- und dezimalen Standortcodes automatisch erkennen, was bedeutet, dass die Eingabe von B0A1 auch „ah“ erhält.)
Interner Code bezieht sich auf die Zeichenkodierung innerhalb des Betriebssystems. Der interne Code früher Betriebssysteme war sprachabhängig. Das heutige Windows unterstützt Unicode innerhalb des Systems und verwendet dann Codepages, um sich an verschiedene Sprachen anzupassen. Das Konzept des „internen Codes“ ist relativ vage. Microsoft bezeichnet die von der Standardcodepage angegebene Codierung im Allgemeinen als internen Code.
Es gibt keine offizielle Definition des Begriffs interner Code und Codepage ist lediglich der Name der Firma Microsoft. Solange wir als Programmierer wissen, was sie sind, besteht keine Notwendigkeit, diese Begriffe allzu sehr zu untersuchen.
Die sogenannte Codepage (Codepage) ist die Zeichenkodierung für eine Sprache. Die Codepage von GBK ist beispielsweise CP936, die Codepage von BIG5 ist CP950 und die Codepage von GB2312 ist CP20936.
Windows verfügt über das Konzept einer Standardcodepage, d. h. welche Codierung standardmäßig zur Interpretation von Zeichen verwendet wird. Beispielsweise öffnet Windows Notepad eine Textdatei und der Inhalt darin ist ein Bytestream: BA, BA, D7, D6. Wie soll Windows es interpretieren?
Sollte es gemäß der Unicode-Kodierung, GBK, BIG5 oder ISO8859-1 interpretiert werden? Wenn man es nach GBK interpretiert, erhält man das Wort „chinesische Schriftzeichen“. Anderen Codierungsinterpretationen zufolge wird das entsprechende Zeichen möglicherweise nicht oder das falsche Zeichen gefunden. Der sogenannte „Fehler“ bedeutet, dass er nicht mit der ursprünglichen Absicht des Textautors übereinstimmt und verstümmelte Zeichen entstehen.
Die Antwort ist, dass Windows den Bytestream in der Textdatei gemäß der aktuellen Standardcodepage interpretiert. Die Standardcodepage kann über die regionalen Optionen in der Systemsteuerung festgelegt werden. In Notepads Speichern unter gibt es ein ANSI-Element, das tatsächlich gemäß der Codierungsmethode der Standardcodepage speichert.
Der interne Code von Windows ist Unicode, der technisch mehrere Codepages gleichzeitig unterstützen kann. Solange die Datei erklären kann, welche Codierung sie verwendet und der Benutzer die entsprechende Codepage installiert hat, kann Windows sie beispielsweise korrekt anzeigen. Zeichensatz kann in einer HTML-Datei angegeben werden.
Einige Autoren von HTML-Dateien, insbesondere englische Autoren, glauben, dass jeder auf der Welt Englisch verwendet, und geben in der Datei keinen Zeichensatz an. Wenn er Zeichen zwischen 0x80-0xff verwendet und chinesisches Windows sie gemäß dem Standard-GBK interpretiert, werden verstümmelte Zeichen angezeigt. Fügen Sie zu diesem Zeitpunkt einfach die Anweisung zur Angabe des Zeichensatzes zur HTML-Datei hinzu, zum Beispiel:
Wenn die vom ursprünglichen Autor verwendete Codepage mit ISO8859-1 kompatibel ist, treten keine verstümmelten Zeichen auf.
Lassen Sie uns über den Standortcode von Ah sprechen, der 0x10, 0x01 ist, wenn er hexadezimal geschrieben wird. Dies steht im Widerspruch zur von Computern weit verbreiteten ASCII-Kodierung. Um mit der ASCII-Kodierung von 00-7f kompatibel zu sein, fügen wir A0 zu den High- und Low-Bytes der Ortsvorwahl hinzu. Auf diese Weise wird der Code für âahâ zu B0A1. Wir nennen die Kodierung mit zwei hinzugefügten A0 auch
GB2312-Kodierung
, obwohl der Originaltext von GB2312 dies überhaupt nicht erwähnt.
Das Obige ist eine vollständige Einführung in die Unterschiede zwischen UTF-8 und GBK UTF8 GB2312. Wenn Sie mehr über HTML-Tutorials erfahren möchten, schauen Sie sich bitte die chinesische PHP-Website an.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen UTF-8 und GBK UTF8 GB2312?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!