Thêm một số thông tin cho các câu trả lời trên từ bài viết này .
Đã thử nghiệm trong Java-12, nên hoạt động trong tất cả các phiên bản Java trên 5.
Như đã đề cập ở đây: https://stackoverflow.com/a/47505451/2987755 ,
bất kỳ ký tự nào (có Unicode nằm trên U + FFFF) được biểu diễn dưới dạng một cặp thay thế, mà Java lưu trữ dưới dạng một cặp giá trị char, tức là một Unicode ký tự được biểu diễn dưới dạng hai ký tự Java liền kề.
Như chúng ta có thể thấy trong ví dụ sau.
1. Chiều dài:
"🌉".length() //2, Expectations was it should return 1
"🌉".codePointCount(0,"🌉".length()) //1, To get the number of Unicode characters in a Java String
2. Bình đẳng:
Biểu thị "" cho Chuỗi bằng Unicode \ud83c\udf09
như bên dưới và kiểm tra tính bằng.
"🌉".equals("\ud83c\udf09") // true
Java không hỗ trợ UTF-32
"🌉".equals("\u1F309") // false
3. Bạn có thể chuyển đổi ký tự Unicode thành Chuỗi Java
"🌉".equals(new String(Character.toChars(0x0001F309))) //true
4. String.sub chuỗi () không xem xét các ký tự bổ sung
"🌉🌐".substring(0,1) //"?"
"🌉🌐".substring(0,2) //"🌉"
"🌉🌐".substring(0,4) //"🌉🌐"
Để giải quyết điều này chúng ta có thể sử dụng String.offsetByCodePoints(int index, int codePointOffset)
"🌉🌐".substring(0,"🌉🌐".offsetByCodePoints(0,1) // "🌉"
"🌉🌐".substring(2,"🌉🌐".offsetByCodePoints(1,2)) // "🌐"
5. Lặp lại chuỗi Unicode bằng BreakIterator
6. Sắp xếp chuỗi bằng Unicode java.text.Collator
7. Các ký tự toUpperCase()
, toLowerCase()
không nên sử dụng các phương thức, thay vào đó, sử dụng chữ hoa và chữ thường của miền địa phương cụ thể.
8. Character.isLetter(char ch)
không hỗ trợ, được sử dụng tốt hơn Character.isLetter(int codePoint)
, đối với mỗi methodName(char ch)
phương thức trong lớp Nhân vật sẽ có loại methodName(int codePoint)
có thể xử lý các ký tự bổ sung.
9. Chỉ định bộ ký tự trong String.getBytes()
, chuyển đổi từ byte thành chuỗi InputStreamReader
,,OutputStreamWriter
Tham chiếu:
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/l Library / j-unicode / index.html
https://www.oracle.com/technetwork/articles/javaee/supâyary-42654.html
Thông tin thêm về ví dụ image1 image2
Các thuật ngữ khác đáng để khám phá: Chuẩn hóa , BiDi