如何在 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 文字?的主要内容,如果未能解决你的问题,请参考以下文章

字符编码

java比较容易忘记的知识点

15个易遗忘的java知识点

测试utf-8 汉字和字符等一般占多少个字节

如何计算在java中执行的字节码数

java中字节级数据文件的读写编程