1

我有一个波斯语单词,如果以 UTF-8 编码显示是这样的:

"خطاب"

我有这个词的两个版本,都在 UTF-8 的 Notepad++ 中如上所示。但是如果我以 ANSI 模式查看它们,我会看到:

ïºïºŽï»„ﺧ

对于我看到的另一个:

خطاب    

为什么相同的单词在 ANSI 格式中有如此不同的表示?当我在 Python 中使用 PIL 来绘制这些时,其中一个的结果是正确的,而另一个则不正确。

我很感激这方面的任何帮助。

4

1 回答 1

2

在 Unicode 中,您可以用不止一种方式表示某个字符。在这种情况下,这些阿拉伯字符在第一种情况下用来自阿拉伯语表示形式-B 块的代码点表示,在第二种情况下用来自常规阿拉伯语块的代码点表示。

如果你转换文本

ïºïºŽï»„ﺧ</p>

到一个字节流,你得到

EFBA 0F EFBA8E EFBB84 EFBAA7

请注意,您没有0F在上面的文本中看到代表字节的字符,因为它是一个非可视字符。

现在该字节流表示 UTF-8 编码的文本。对其进行解码将为您提供以下 Unicode 代码点:

FE8F FE8E FEC4 FEA7

您可以匹配阿拉伯语演示表格-B 块中的那些以形成您的波斯语文本:

خطاب

您可以对其他文本执行相同的过程:خطاب为您提供代表 UTF-8 编码文本的字节流D8AE D8B7 D8A7 D8A8,解码为您提供 Unicode 代码点062e 0637 0627 0628,与常规阿拉伯语块匹配的再次为您提供文本خطاب

于 2014-03-02T22:56:56.840 回答