Unicode-Codierung für String-Literale in C 11
Die Einführung neuer Zeichen- und String-Literaltypen in C 11 hat die Fähigkeiten der Sprache erweitert Umgang mit Unicode-Kodierungen. Während es mittlerweile vier Zeichentypen (char, wchar_t, char16_t, char32_t) und fünf String-Literal-Typen gibt, gelten für das Verhalten und die Kompatibilität dieser Zeichen und Strings mit Kodierungsmechanismen bestimmte Regeln.
Kodierungskompatibilität
Die x-Zeichenreferenz kann mit allen Zeichenfolgentypen verwendet werden und ermöglicht die Einbeziehung von Zeichenwerten, die in dargestellt werden hexadezimal. Allerdings sind u- und U-Referenzen auf Zeichenfolgen mit UTF-codierter Semantik beschränkt. Zeichenreferenzen werden basierend auf der Codierung der enthaltenen Zeichenfolge konvertiert.
Stringlänge und Codierung
Obwohl die Anzahl der in einer Zeichenfolge enthaltenen Unicode-Codeeinheiten je nach variieren kann Bei der Codierung haben die Arrays, die String-Literale darstellen, eine feste Breite, wobei jedes Element eine einzelne Codeeinheit darstellt. Die Anzahl der verwendeten Codeeinheiten wird durch die Unicode-Kodierung der Zeichenfolge bestimmt.
UTF-Kodierungssemantik
u""-Zeichenfolgenliterale sind speziell UTF-16-kodiert. während u8""-String-Literale in UTF-8 codiert sind. UTF-16-Codierungen verwenden char16_t-Codeeinheiten, während UTF-8-Codierungen Bytesequenzen variabler Länge zur Darstellung von Codepunkten verwenden.
Einzelne Surrogate
Einzelne Surrogate (0xD800- 0xDFFF) sind als Codepunkte in u-Sequenzen nicht zulässig. Zur Darstellung von Unicode-Zeichen in diesem Bereich müssen UTF-16-Ersatzzeichenpaare verwendet werden.
Codierungsbewusstsein
Standardfunktionen zur String-Manipulation verarbeiten die Unicode-Codierungssemantik nicht von Natur aus und behandeln UTF nicht -codierte Zeichenfolgen als Folge einzelner Codeeinheiten. Eingabe- und Ausgabeströme über Gebietsschemas ermöglichen jedoch das Lesen und Schreiben von Unicode-codierten Werten mit ordnungsgemäßer Kontextualisierung.
Das obige ist der detaillierte Inhalt vonWie gehen C 11-String-Literale mit unterschiedlichen Unicode-Codierungen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!