Javas char ist 16 bit, aber Unicode hat viel mehr Zeichen - wie geht Java damit um?Wie unterstützt Java 16-Bit-Zeichen Unicode?
Antwort
Java-Zeichenfolgen sind UTF-16 (Big-Endian), daher kann ein Unicode-Codepunkt aus einem oder zwei Zeichen bestehen. Unter dieser Codierung kann Java den Codepunkt U + 1D50A (MATHEMATISCHER FRAKTUR CAPITAL G) mit den Zeichen 0xD835 0xDD0A
(String literal "\uD835\uDD0A"
) darstellen. Die Klasse Character bietet Methoden zum Konvertieren in/aus Codepunkten.
// Unicode code point to char array
char[] math_fraktur_cap_g = Character.toChars(0x1D50A);
http://en.wikipedia.org/wiki/UTF-16
In computing, UTF-16 (16-Bit- UCS/Unicode Transformation Format) ist eine variabler Länge Zeichencodierung für Unicode, der fähig ist, codierend die gesamten Unicode Repertoires. Das Codierungsformular bildet jedes Zeichen in eine Folge von 16-Bit-Wörtern ab. Die Zeichen sind als Codepunkte bekannt und die 16-Bit-Wörter werden als Code-Einheiten bezeichnet. Für Zeichen in der Basic Multilingual Plane (BMP) ist die resultierende Codierung ein einzelnes 16-Bit-Wort. Für Zeichen in den anderen Ebenen wird die Codierung zu einem Paar 16-Bit-Wörtern führen, die zusammen als Ersatzpaar bezeichnet werden. All möglicher Code Punkte von U + 0000 bis U + 10FFFF, mit Ausnahme des Surrogat-Code-Punkte U + D800-U + DFFF (die nicht Zeichen), ist eindeutig durch UTF-16, unabhängig von dem Codepunkt des kartiert aktuelle oder zukünftige Zeichenzuweisung oder verwenden.
Und siehe meine vorherige Antwort in SO für, wie man korrekt über alle Zeichen in einer Java-Schnur iteriert. http://stackoverflow.com/questions/1527856/how-can-i-iterate-through-the-unicode-codepoints-of-a-java-string/1527891#1527891 –
Java verwendet UTF-16 für Strings - bedeutet im Wesentlichen, dass Zeichen variable Breite haben. Die meisten von ihnen passen in 16 Bit, aber diejenigen außerhalb Basic Multilingual Pane belegen 32 Bit. Es ist dem UTF-8-Schema sehr ähnlich.
- 1. Unicode-Version von Java unterstützt 6
- 2. SQLite-Datenbank unterstützt Unicode-Daten
- 3. Unterstützt Lucene Unicode?
- 4. Unterstützt Standard ML Unicode?
- 5. Vim unterstützt Unicode nicht?
- 6. Unterstützt jeder Browser alle Unicode?
- 7. shlex.split unterstützt noch nicht Unicode?
- 8. Warum SpEL keine Unicode-Variable unterstützt? Wie arbeitest du?
- 9. Ruby 1.9 unterstützt keine Unicode-Normalisierung noch
- 10. Windows Phone 8: unterstützt nativen Unicode (Malayalam)?
- 11. Typeerror: Unicode-Decodierung wird nicht unterstützt
- 12. Java Unicode Fonts
- 13. iText, Unicode-Zeichen und Java
- 14. Java Unicode Vergleich
- 15. Java Entfernen Unicode-Zeichen
- 16. Java, Unicode und Fonts
- 17. Java Unicode Variablennamen Devanagari
- 18. Java Unicode Variablennamen
- 19. Unicode-Zeichen Java
- 20. Java Unicode Hex-String
- 21. Wie schreibe ich Unicode-Kreuzsymbol in Java?
- 22. Wie passe ich Unicode-Zeichen in Java
- 23. Unterstützt Java Variablenvariablen?
- 24. Concatenate String in Java Unicode
- 25. Java - Weisen Unicode Apostroph verkohlen
- 26. Decompiler unterstützt Java 8?
- 27. Java: string.replace unterstützt keine Variablen?
- 28. "TypeError: 'Unicode' Objekt unterstützt keine Artikelzuweisung" in Wörterbüchern
- 29. Unterstützt Python Unicode über die grundlegende mehrsprachige Ebene hinaus?
- 30. Welche Java-Versionen unterstützt Griffon?
Warum verwenden wir nicht 'int' type' math_fraktur_cap_g', um Ersatzpaare von Nicht-BMP zu lesen? wie erwähnt [hier] (https://stackoverflow.com/a/13112474/3317808) – overexchange