我想在Java中编写unicode literal U+10428。http://www.marathon-studios.com/unicode/U10428/Deseret_Small_Letter_Long_I
我尝试使用'u10428',但它无法编译。
因为当人们认为64K对每个人来说都足够的时候,Java就完全采用了unicode(以前从哪里听说过这样的?),所以他们从UCS-2开始,后来升级到UTF-16。
但是他们从来没有费心为BMP之外的unicode字符添加转义序列。
因此,您唯一的办法是手动重新编码为UTF-16代理对并使用两个UTF-16转义。您的示例代码点U+10428
是"uD801uDC28"
。
我使用这个站点进行重新编码:https://rishida.net/tools/conversion/
引用自文档:
3.10.5字符串字面值
字符串字面值由用双引号括起来的零个或多个字符组成。字符可以用转义序列表示(§3.10.6)——一个转义序列用于U+0000到U+FFFF范围内的字符,两个转义序列用于U+010000到U+10FFFF范围内字符的UTF-16代理码单元。