RTL 字符的 ANSI 值

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

我想知道在文本文件中进行 RTL 对齐的字符“\u202B”的 ANSI 值,我在 UTF8 文件中使用它并使文本 RTL 的问题但是当文本文件是 ANSI 时它显示分数 ”???”这意味着这个字符没有被识别,所以任何人都可以知道这个字符在 ANSI 中的相反代码是什么?

java text utf-8 ansi codepages
2个回答
1
投票

如果系统区域设置为阿拉伯语,则 Windows-1256 是“ANSI 代码页”。 用词不当,但所有 MS 文档都称其为... 在 Windows 世界中,“ANSI 代码页”应该读作“系统代码页”

无论如何,U+202B 在 windows-1256 中没有等价物。 你可能可以实现你需要的

U+200E  LEFT-TO-RIGHT MARK    0xFD in windows-1256
U+200F  RIGHT-TO-LEFT MARK    0xFE in windows-1256  

0
投票

没有一个。 ANSI 是美国国家标准协会的一个相当古老的标准。它不支持阿拉伯语或希伯来语等 RTL 语言。

维基百科文章“ANSI escape code”列出了它支持的所有代码。

解决方法是使用呈现所需字形(字符)的字体,以相反的顺序打印它们并使用光标移动命令右对齐文本。

[编辑] 你混淆了几件事。首先,ANSI 是一组用于控制您的终端的转义序列。

ASCII、Windows 1256 和 UTF-8 是字符编码(即将文本表示为八位字节或字节序列的方式)。

Unicode 是一个字形库。它试图包含以任何语言显示文本所需的每个字形。您可以使用 UTF-8、-16 等对 Unicode 数据进行编码以将其序列化。

特殊的 Unicode 字符

RIGHT-TO-LEFT EMBEDDING
(U+202B) 在任何其他字符编码中都没有表示。

你必须编写一个程序来解析输入,然后你必须将文本输出到打印机,以正确的顺序对字符进行排序。没有捷径可以做到这一点。

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