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\udf09wie 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