在java中,
可以使用UTF-16
编码的unicode转义序列表示Unicode字符。下面是一个表示BMP平面字符
char ch = '\u00A5'; // '¥'
代理对可以用于非BMP平面字符吗?
char ch4 = '\uD800\uDC00'; //Invalid character constant
如何使用java语法表示非BMP平面字符?
答案 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
有一个方法)。