如何在 Java 中编写 3 个字节的 unicode 文字?
Posted
技术标签:
【中文标题】如何在 Java 中编写 3 个字节的 unicode 文字?【英文标题】:How to write 3 bytes unicode literal in Java? 【发布时间】:2014-08-29 06:35:00 【问题描述】:我想用 Java 编写 unicode 文字 U+10428。 http://www.marathon-studios.com/unicode/U10428/Deseret_Small_Letter_Long_I
我尝试使用 '\u10428',但它无法编译。
【问题讨论】:
Print string literal unicode as the actual character的可能重复 "\u" 格式是十六进制,而不是十进制。 我认为这是一个不同的问题。 是的,而且似乎 U+10428 是十六进制的。 @jtahlborn 3-Byte Unicode 对于 U+10000 及以上来说是一个可怕的术语(因为 10000 不是字节)。但是,如果这就是将您带到这里的原因,您可能会找到答案。 【参考方案1】:因为当人们认为 64K 足以满足所有人的需求时,Java 采用了完整的 unicode(以前从哪里听说过?),他们从 UCS-2 开始,后来升级到 UTF-16。
但他们从不费心为 BMP 之外的 unicode 字符添加转义序列。
因此,您唯一的办法是手动重新编码为 UTF-16 代理对并使用两个 UTF-16 转义符。
您的示例代码点U+10428
是"\uD801\uDC28"
。
我使用这个网站进行重新编码:https://rishida.net/tools/conversion/
Quote from the docs:
3.10.5 字符串文字
字符串文字由零个或多个用双引号括起来的字符组成。字符可以由转义序列(第 3.10.6 节)表示 - 一个转义序列用于 U+0000 到 U+FFFF 范围内的字符,两个转义序列用于 U+010000 到范围内字符的 UTF-16 代理代码单元U+10FFFF。
【讨论】:
在 Java 中,它不能。无论如何,请注意“一个字符”:根据上下文(有时不存在或过于模糊),它可以表示字节、代码单元、代码点和字形的任何内容。以上是关于如何在 Java 中编写 3 个字节的 unicode 文字?的主要内容,如果未能解决你的问题,请参考以下文章