Yukarıdaki cevaplara biraz daha bilgi eklemek bu yazı.
Java-12'de test edilmiştir, 5'in üzerindeki tüm Java sürümlerinde çalışmalıdır.
Burada belirtildiği gibi: https://stackoverflow.com/a/47505451/2987755 ,
hangi karakter (Unicode'u U + FFFF'nin üstünde), Java'nın bir çift char değeri olarak depoladığı bir vekil çift olarak temsil edilir, yani tek Unicode karakteri iki bitişik Java karakteri olarak gösterilir.
Aşağıdaki örnekte gördüğümüz gibi.
1. Uzunluk:
"🌉".length() //2, Expectations was it should return 1
"🌉".codePointCount(0,"🌉".length()) //1, To get the number of Unicode characters in a Java String
2. Eşitlik: Aşağıdaki gibi
Unicode kullanarak Dizeye "🌉" yazın \ud83c\udf09
ve eşitliği kontrol edin.
"🌉".equals("\ud83c\udf09") // true
Java UTF-32'yi desteklemez
"🌉".equals("\u1F309") // false
3. Unicode karakterini Java String'e dönüştürebilirsiniz
"🌉".equals(new String(Character.toChars(0x0001F309))) //true
4. String.substring (), ek karakterleri dikkate almaz
"🌉🌐".substring(0,1) //"?"
"🌉🌐".substring(0,2) //"🌉"
"🌉🌐".substring(0,4) //"🌉🌐"
Bunu çözmek için kullanabiliriz String.offsetByCodePoints(int index, int codePointOffset)
"🌉🌐".substring(0,"🌉🌐".offsetByCodePoints(0,1) // "🌉"
"🌉🌐".substring(2,"🌉🌐".offsetByCodePoints(1,2)) // "🌐"
5. yineleme Unicode dizesi BreakIterator
Unicode ile 6. Sıralama Strings java.text.Collator
7. Karakter en toUpperCase()
, toLowerCase()
yöntemler kullanılmamalıdır, bunun yerine, kullanımı dize büyük harf ve özellikle yerel ayarları küçük harf.
8. Karakter sınıfındaki her bir yöntem için Character.isLetter(char ch)
, daha iyi kullanılanları desteklemez, bunların türü ek karakterleri işleyebilir.
9. Bayt'tan Dize'ye dönüştürerek karakter kümesini belirtin ,Character.isLetter(int codePoint)
methodName(char ch)
methodName(int codePoint)
String.getBytes()
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
Örnek hakkında daha fazla bilgi image1 image2 Keşfetmeye
değer diğer terimler: Normalleştirme , BiDi