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

时间:2015-08-05 08:42:15

标签: java unicode encoding

在java中,

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

的示例
char ch = '\u00A5'; // '¥'

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

char ch4 = '\uD800\uDC00'; //Invalid character constant

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

1 个答案:

答案 0 :(得分:5)

使用单个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有一个方法)。