UTF-8 kurze Einführung
UTF-8 Ist eine Art Unicode Zeichenkodierung mit variabler Länge für , Auch bekannt als der "universelle Code" .
UTF-8 Verwendung 1 Reichweite 6 Byte-Kodierung UNICODE Zeichen .
UTF-8 Kodierungsvorschriften
Wenn es nur ein Byte gibt, ist das höchste Binärbit: 0;
Wenn es Multi Byte ist , Das erste Byte beginnt mit dem höchsten Bit , Die folgenden Binärwerte sind: 1 Die Anzahl von bestimmt die Anzahl der Bytes, die es codiert , Die verbleibenden Bytes werden durch 10 Start .
Unicode/UCS-4 | bit Zahl | UTF-8 | byte Zahl | Bemerkungen |
0000~ 007F | 0~7 | 0XXX XXXX | 1 | |
0080~ 07FF | 8~11 | 110X XXXX 10XX XXXX | 2 | |
0800~ FFFF | 12~16 | 1110XXXX 10XX XXXX 10XX XXXX | 3 | Grundlegender Definitionsbereich :0~FFFF |
1 0000~ 1F FFFF | 17~21 | 1111 0XXX 10XX XXXX 10XX XXXX 10XX XXXX | 4 | Unicode6.1 Definitionsbereich :0~10 FFFF |
20 0000~ 3FF FFFF | 22~26 | 1111 10XX 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX | 5 | erklären : Das ist nicht unicode Codierungsbereich: , gehören zu UCS-4 Code Frühe Normen UTF-8 Erreichbar 6 Byte-Sequenz , Kann überschrieben werden in 31 Bit ( Die ursprünglichen Grenzen des universellen Zeichensatzes ). Für all das ,2003 Jahr 11 Monat UTF-8 Abdeckung RFC 3629 Neuspezifikation , Nur das Original Unicode Definierter Bereich ,U+0000 Reichweite U+10FFFF. Nach Spezifikationen , Diese Byte-Werte werden nicht in legal angezeigt UTF-8 In Folge |
400 0000~ 7FFF FFFF | 27~31 | 1111 110X 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX | 6 |
UTF-8 Vorteil
UTF-8 Codierung kann durch Maskieren von Bits und Verschieben von Operationen schnell gelesen und geschrieben werden . Zeichenfolgenvergleich strcmp() und wcscmp() Die Rückgaberergebnisse sind die gleichen , So wird die Sortierung einfacher . Byte FF und FE bleiben UTF-8 Nie im Code erscheinen , Daher können sie verwendet werden, um anzuzeigen UTF-16 oder UTF-32 Text ( siehe BOM) UTF-8 Es ist unabhängig von Byte-Reihenfolge . Seine Byte-Reihenfolge ist in allen Systemen gleich , Also braucht es nicht wirklich BOM.
UTF-8 Mangel
Du kannst nicht UNICODE Nach der Anzahl der Zeichen zu urteilen UTF-8 Textbytes , weil UTF-8 Es ist ein Code mit variabler Länge. Es muss verwendet werden 2 Bytes kodieren diejenigen mit Erweiterung ASCII Nur Zeichensatz benötigt 1 Zeichen von Bytes ISO Latin-1 ja UNICODE Teilmenge von , Aber nicht UTF-8 Teilmenge von 8 Bitzeichen UTF-8 Codierung wird email Gateway-Filterung , weil internet Die Informationen wurden ursprünglich entwickelt, um: 7 Position ASCII Code . Als Ergebnis UTF-7 Code . UTF-8 Werte in seiner Darstellung verwenden 100xxxxx Die Wahrscheinlichkeit der Überschreitung 50%, Bestehende Implementierungen wie ISO 2022, 4873, 6429, und 8859 System , Wird es verwechseln mit C1 Kontrollcode . Als Ergebnis UTF-7.5 Code .