非BMP平面字符的Unicode转义序列

ove*_*nge 2 java unicode encoding

在java中,

可以使用unicode转义序列表示Unicode字符以进行 UTF-16编码.下面是一个表示BMP平面字符的示例

char ch = '\u00A5'; // '¥'
Run Code Online (Sandbox Code Playgroud)

代理对可以用于非BMP平面字符吗?

char ch4 = '\uD800\uDC00'; //Invalid character constant
Run Code Online (Sandbox Code Playgroud)

如何使用java语法表示非BMP平面字符?

fge*_*fge 5

您不能使用单个char常量,因为char是UTF-16代码单元.您必须使用String常量,例如:

final String s = "\uXXXX\uYYYY";
Run Code Online (Sandbox Code Playgroud)

XXXX高代理人在哪里,YYYY是低代理人.

另一种解决方案是使用a int来存储代码点; 然后你可以用它Character.toChars()来获取char[]它:

final int codePoint = 0x1f4ae; // for instance
final char[] toChars = Charater.toChars(codePoint);
Run Code Online (Sandbox Code Playgroud)

根据您使用的内容,您还可以直接附加代码点(例如,StringBuilder有一个方法).

  • 你当然会这样做; 再次阅读我的答案:你不能使用char常量,你需要一个String常量 (3认同)