Wie kann ich Zeichen in einer UTF-8-Zeichenfolge in die entsprechenden UCS-2-Codepunkte konvertieren?

Barbara Streisand
Freigeben: 2024-10-30 02:15:02
Original
911 Leute haben es durchsucht

How can I convert characters in a UTF-8 string to their corresponding UCS-2 code points?

Konvertieren von Zeichen in UCS-2-Codepunkte in UTF-8-Zeichenfolge

Bei dieser Frage geht es darum, die UCS-2-Codepunkte für eine bestimmte UTF-8-Zeichenfolge zu erhalten. Die Aufgabe besteht darin, einzelne Zeichen in ihre entsprechenden UCS-2-Codepunkte umzuwandeln, unabhängig von der Sprache oder Komplexität der Zeichen.

UCS-2-Codepunktdarstellung

Jeder UCS-2-Codepunkt wird in 1–4 Bytes gespeichert, basierend auf dem Codepunktwert:

  • 1 Byte: 0xxxxxxx
  • 2 Bytes: 110xxxxx 10xxxxxx
  • 3 Bytes: 1110xxxx 10xxxxxx 10xxxxxx
  • 4 Bytes: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Bestimmen der Byteanzahl

Zur Bestimmung der Byteanzahl für ein Zeichen, untersuchen Sie das erste Byte:

  • Führende 0: 1-Byte-Zeichen
  • Führende 110: 2-Byte-Zeichen
  • Führende 1110: 3-Byte-Zeichen
  • Führend 11110: 4-Byte-Zeichen
  • Führend 10: Nicht-anfängliches Byte eines Multibyte-Zeichens
  • Führend 11111: Ungültiges Zeichen

Beispiel-C-Code

Hier ist ein Beispiel-C-Code zum Konvertieren eines UTF-8-Zeichens in einen UCS-2-Codepunkt:

<code class="c">wchar_t utf8_char_to_ucs2(const unsigned char *utf8)
{
  if(!(utf8[0] & 0x80))      // 0xxxxxxx
    return (wchar_t)utf8[0];
  else if((utf8[0] & 0xE0) == 0xC0)  // 110xxxxx
    return (wchar_t)(((utf8[0] & 0x1F) << 6) | (utf8[1] & 0x3F));
  else if((utf8[0] & 0xF0) == 0xE0)  // 1110xxxx
    return (wchar_t)(((utf8[0] & 0x0F) << 12) | ((utf8[1] & 0x3F) << 6) | (utf8[2] & 0x3F));
  else
    return ERROR;  // uh-oh, UCS-2 can't handle code points this high
}</code>
Nach dem Login kopieren

Alternative Lösungen

Sie können auch vorhandene Bibliotheken wie iconv oder spezifische Bibliotheken für Ihre Programmiersprache verwenden.

Das obige ist der detaillierte Inhalt vonWie kann ich Zeichen in einer UTF-8-Zeichenfolge in die entsprechenden UCS-2-Codepunkte konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!