Java -- 如何对 unicode 专用字符进行转义?

问题描述 投票:0回答:1

我有一个程序可以读取未转义的 unicode 字符串列表 (

u/XXXX
) 并将它们转换为编码的 unicode 字符,将该版本写入终端和文本文件。

我正在使用

org.apache.commons.text.StringEscapeUtils.unescapeJava(String)
来处理转义的 unicode 点的转义。

我指的是这些 unicode 条目以获取我的专用字符:https://jrgraphix.net/r/Unicode/E000-F8FF (我预先用上面显示的十六进制数字 ^)

u/

以下是输出的示例:

如果您将其粘贴到上面网站的 ctrl F 框中,您会看到它指向
E022

现在,这是我的问题,通过扩展我遇到的问题:

它不工作。出于某种原因,它不输出字符本身,而只是输出一个不代表所讨论的专用字符的通用问号。如果有人可以帮助我,我将不胜感激。

到目前为止,我没有运气。

java unicode escaping filewriter
1个回答
1
投票

PUA 没有官方指定的角色

根据定义,专用区 (PUA) 没有由 Unicode Consortium 分配的字符。 Unicode 联盟承诺该范围内的所有 code point 数字永远不会被正式分配任何字符。

这让我们所有人都可以自由地创建一种字体,该字体可以分配我们想要分配给任何这些代码点的任何类型的glyph

您可能想在代码点 E022 处创建带有红心卡通的字体。同时,我可能会选择制作一种带有玄凤鹦鹉图案的字体。还有一个叫 Bob 的人在 E022 用一张 Microlino 汽车的图片创建了自己的字体。我们所有人,你、我和鲍勃,都很高兴知道我们的自定义字体永远不会被未来官方认可的字符在该代码点踩踏。

如果爱丽丝喜欢你的红心,想要使用它,她需要获得一份你的字体。她需要在她的计算机上安装该字体。她需要:

  • 确保没有输入字体在代码点 E022 处提供字形,,
  • 使用允许她指定使用您的字体的应用程序,而不是任何其他也可能巧合地在 E022 处提供字形的字体。

👉 如果 Alice 在 E022 处根本没有安装带有字形的字体,那么她的计算机的操作系统将退回到显示某种替代字形,例如空框或问号以指示缺少字形。

事实证明,Unicode 中定义的三个 PUA 相当流行。人们使用它们为不符合 Unicode 联盟要求的章程创建字体,从而阻止这些字符在未来被考虑包含在 Unicode 中。例如虚构的语言,如《星际迷航》中的Klingon或小说中的精灵语。这种流行促使 Unicode 联盟之外的志愿者设计了 PUA 代码点的公共注册表,试图避免各种字体在特定代码点上发生冲突。

© www.soinside.com 2019 - 2024. All rights reserved.