我有一个波斯语单词,如果以 UTF-8 编码显示是这样的:
"خطاب"
我有这个词的两个版本,都在 UTF-8 的 Notepad++ 中如上所示。但是如果我以 ANSI 模式查看它们,我会看到:
ïºïºŽï»„ﺧ
对于我看到的另一个:
خطاب
为什么相同的单词在 ANSI 格式中有如此不同的表示?当我在 Python 中使用 PIL 来绘制这些时,其中一个的结果是正确的,而另一个则不正确。
我很感激这方面的任何帮助。
我有一个波斯语单词,如果以 UTF-8 编码显示是这样的:
"خطاب"
我有这个词的两个版本,都在 UTF-8 的 Notepad++ 中如上所示。但是如果我以 ANSI 模式查看它们,我会看到:
ïºïºŽï»„ﺧ
对于我看到的另一个:
خطاب
为什么相同的单词在 ANSI 格式中有如此不同的表示?当我在 Python 中使用 PIL 来绘制这些时,其中一个的结果是正确的,而另一个则不正确。
我很感激这方面的任何帮助。
在 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
,与常规阿拉伯语块匹配的再次为您提供文本خطاب
。