Menambahkan beberapa info lagi ke jawaban di atas dari pos ini .
Diuji di Java-12, harus bekerja di semua versi Java di atas 5.
Seperti yang disebutkan di sini: https://stackoverflow.com/a/47505451/2987755 ,
karakter mana saja (yang Unicode-nya di atas U + FFFF) diwakili sebagai pasangan pengganti, yang Java simpan sebagai sepasang nilai char, yaitu Unicode tunggal karakter direpresentasikan sebagai dua karakter Jawa yang berdekatan.
Seperti yang bisa kita lihat pada contoh berikut.
1. Panjang:
"🌉".length() //2, Expectations was it should return 1
"🌉".codePointCount(0,"🌉".length()) //1, To get the number of Unicode characters in a Java String
2. Kesetaraan:
Mewakili "🌉" ke String menggunakan Unicode \ud83c\udf09
seperti di bawah ini dan periksa kesetaraan.
"🌉".equals("\ud83c\udf09") // true
Java tidak mendukung UTF-32
"🌉".equals("\u1F309") // false
3. Anda dapat mengonversi karakter Unicode ke Java String
"🌉".equals(new String(Character.toChars(0x0001F309))) //true
4. String.substring () tidak mempertimbangkan karakter tambahan
"🌉🌐".substring(0,1) //"?"
"🌉🌐".substring(0,2) //"🌉"
"🌉🌐".substring(0,4) //"🌉🌐"
Untuk mengatasi ini kita bisa menggunakan String.offsetByCodePoints(int index, int codePointOffset)
"🌉🌐".substring(0,"🌉🌐".offsetByCodePoints(0,1) // "🌉"
"🌉🌐".substring(2,"🌉🌐".offsetByCodePoints(1,2)) // "🌐"
5. Iterasi Unicode string dengan BreakIterator
6. Sorting Strings dengan Unicode java.text.Collator
7. Karakter ini toUpperCase()
, toLowerCase()
, metode tidak boleh digunakan, sebagai gantinya, huruf besar penggunaan String dan huruf kecil dari daerah tertentu.
8. Character.isLetter(char ch)
tidak mendukung, lebih baik digunakan Character.isLetter(int codePoint)
, untuk setiap methodName(char ch)
metode di kelas Karakter akan ada jenis methodName(int codePoint)
yang dapat menangani karakter tambahan.
9. Tentukan charset di String.getBytes()
, konversi dari Bytes ke String 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
Info lebih lanjut tentang contoh image1 image2
Istilah lain yang perlu dijelajahi: Normalisasi , BiDi