簡體   English   中英

非 BMP 平面字符的 Unicode 轉義序列

[英]Unicode escape sequence for non-BMP plane character

["

char ch = '\u00A5'; // '¥'

您不能使用單個 char 常量來執行此操作,因為 char 是 UTF-16 代碼單元。 您必須使用 String 常量,例如:

final String s = "\uXXXX\uYYYY";

其中XXXX是高代理, YYYY是低代理。

另一種解決方案是使用int來存儲代碼點; 然后,您可以使用Character.toChars()從中獲取char[]

final int codePoint = 0x1f4ae; // for instance
final char[] toChars = Charater.toChars(codePoint);

根據您使用的內容,您還可以直接附加代碼點(例如, StringBuilder有一個方法)。

為了避免為非 BMP 字符編寫代理項對並從代碼點獲取字符串,有幾種方法。

String test1 = new String(new int[] { 0x1f4ae }, 0, 1);
String test2 = String.valueOf(Character.toChars(0x1f4ae));
String test3 = Character.toString(0x1f4ae):

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM