Hinzufügen mehr Informationen zu den oben genannten Antworten von diesem Beitrag.
In Java-12 getestet, sollte in allen Java-Versionen über 5 funktionieren.
Wie hier erwähnt: https://stackoverflow.com/a/47505451/2987755 ,
welches Zeichen (dessen Unicode über U + FFFF liegt) als Ersatzpaar dargestellt wird, das Java als Paar von Zeichenwerten speichert, dh als einzelner Unicode Zeichen wird als zwei benachbarte Java-Zeichen dargestellt.
Wie wir im folgenden Beispiel sehen können.
1. Länge:
"🌉".length() //2, Expectations was it should return 1
"🌉".codePointCount(0,"🌉".length()) //1, To get the number of Unicode characters in a Java String
2. Gleichheit:
Stellen Sie "🌉" für String mit Unicode \ud83c\udf09
wie folgt dar und überprüfen Sie die Gleichheit.
"🌉".equals("\ud83c\udf09") // true
Java unterstützt UTF-32 nicht
"🌉".equals("\u1F309") // false
3. Sie können Unicode-Zeichen in Java-Zeichenfolgen konvertieren
"🌉".equals(new String(Character.toChars(0x0001F309))) //true
4. String.substring () berücksichtigt keine zusätzlichen Zeichen
"🌉🌐".substring(0,1) //"?"
"🌉🌐".substring(0,2) //"🌉"
"🌉🌐".substring(0,4) //"🌉🌐"
Um dies zu lösen, können wir verwenden String.offsetByCodePoints(int index, int codePointOffset)
"🌉🌐".substring(0,"🌉🌐".offsetByCodePoints(0,1) // "🌉"
"🌉🌐".substring(2,"🌉🌐".offsetByCodePoints(1,2)) // "🌐"
5. Iterieren Unicode - String mit BreakIterator
6. Sortierung Strings mit Unicode java.text.Collator
7. Charakters toUpperCase()
, toLowerCase()
sollten Methoden nicht verwendet werden, stattdessen Verwendung String Groß- und Klein besonders locale.
8. Character.isLetter(char ch)
unterstützt nicht, besser verwendet Character.isLetter(int codePoint)
, für jede methodName(char ch)
Methode in der Zeichenklasse gibt es einen Typ, der methodName(int codePoint)
zusätzliche Zeichen verarbeiten kann.
Geben charset 9 String.getBytes()
von Bytes zu String Umwandeln InputStreamReader
,OutputStreamWriter
Ref:
https://coolsymbol.com/emojis/emoji-for-copy-and-paste.html#objects
https://www.online-toolz.com/tools/text-unicode-entities-convertor.php
https: //www.ibm.com/developerworks/library/j-unicode/index.html
https://www.oracle.com/technetwork/articles/javaee/supplementary-142654.html
Weitere Informationen zu Beispiel image1 image2
Weitere Begriffe, die es wert sind, untersucht zu werden: Normalisierung , BiDi