เพิ่มข้อมูลเพิ่มเติมบางคำตอบข้างต้นจากนี้โพสต์
ทดสอบใน Java-12 ควรทำงานกับ Java เวอร์ชันทั้งหมดที่สูงกว่า 5
เป็นที่กล่าวถึงที่นี่: https://stackoverflow.com/a/47505451/2987755 ,
แล้วแต่จำนวนใดตัวอักษร (Unicode ซึ่งอยู่เหนือ U + FFFF) จะแสดงเป็นคู่ตัวแทนซึ่งร้านค้า Java เป็นคู่ของค่าถ่านคือ Unicode เดียว อักขระถูกแสดงเป็นอักขระ Java สองตัวที่อยู่ติดกัน
อย่างที่เราเห็นในตัวอย่างต่อไปนี้
1. ความยาว:
"🌉".length() //2, Expectations was it should return 1
"🌉".codePointCount(0,"🌉".length()) //1, To get the number of Unicode characters in a Java String
2. Equality:
แสดง "🌉" เป็น String โดยใช้ Unicode \ud83c\udf09
ดังนี้และตรวจสอบความเท่าเทียมกัน
"🌉".equals("\ud83c\udf09") // true
Java ไม่รองรับ UTF-32
"🌉".equals("\u1F309") // false
3. คุณสามารถแปลงอักขระ Unicode เป็น Java String
"🌉".equals(new String(Character.toChars(0x0001F309))) //true
4. String.substring () ไม่พิจารณาอักขระเสริม
"🌉🌐".substring(0,1) //"?"
"🌉🌐".substring(0,2) //"🌉"
"🌉🌐".substring(0,4) //"🌉🌐"
เพื่อแก้ปัญหานี้เราสามารถใช้ String.offsetByCodePoints(int index, int codePointOffset)
"🌉🌐".substring(0,"🌉🌐".offsetByCodePoints(0,1) // "🌉"
"🌉🌐".substring(2,"🌉🌐".offsetByCodePoints(1,2)) // "🌐"
สตริง 5. ทำซ้ำ Unicode กับBreakIterator
6. คัดแยกสายกับ Unicode java.text.Collator
7. ตัวละครtoUpperCase()
, toLowerCase()
วิธีไม่ควรนำมาใช้แทนการใช้ตัวพิมพ์ใหญ่และตัวพิมพ์เล็กสตริงของสถานที่โดยเฉพาะอย่างยิ่ง
8. Character.isLetter(char ch)
ไม่รองรับใช้งานได้ดีกว่าCharacter.isLetter(int codePoint)
สำหรับแต่ละmethodName(char ch)
วิธีในคลาสอักขระจะมีประเภทmethodName(int codePoint)
ที่สามารถจัดการอักขระเสริมได้
9. ระบุชุดอักขระใน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
ข้อมูลเพิ่มเติมเกี่ยวกับตัวอย่างimage1 image2
คำอื่น ๆ ที่ควรค่าแก่การสำรวจ: การทำให้เป็นมาตรฐาน , BiDi