我试图获取文本文件的内容并将其映射到json文件,但我注意到python自动将库尔德(sorani)文本转换为UTF-8文字。有人可以解释为什么python会这样做以及如何阻止转换?
您可以使用以下代码进行测试:
def readText():
# test.txt contains kurdish sorani characters (an article)
# Sorani example: ڕۆژتان باش بەڕێزان. من ناوم ڕەنجە.
with open('test.txt', 'r') as context:
data = context.readlines()
return data
print(readText())
我在Ubuntu 14.x上运行python 2.x. Python2.x就是这样做的! Python 3.x不会转换它并且工作得很好。
答案 0 :(得分:0)
您在调用readlines
时看到repr输出,其中返回列表并且列表显示数据的repr表示,一旦您实际打印字符串本身会看到实际的str输出,你也在使用python2:
In [11]: out = readText()
In [12]: print out
['\xda\x95\xdb\x86\xda\x98\xd8\xaa\xd8\xa7\xd9\x86 \xd8\xa8\xd8\xa7\xd8\xb4 \xd8\xa8\xdb\x95\xda\x95\xdb\x8e\xd8\xb2\xd8\xa7\xd9\x86. \xd9\x85\xd9\x86 \xd9\x86\xd8\xa7\xd9\x88\xd9\x85 \xda\x95\xdb\x95\xd9\x86\xd8\xac\xdb\x95. ']
In [13]: print out[0]
ڕۆژتان باش بەڕێزان. من ناوم ڕەنجە.
答案 1 :(得分:-1)
我要在这里采取刺,并猜测你正在某种类型的终端中读取输出,当Python写入终端时,它试图以ASCII格式显示。
如果您将PYTHONIOENCODING
环境变量设置为UTF-8
,这有时可以解决问题 - 它也取决于其他变量。
因此,如果您使用的是类UNIX系统,请在终端中尝试:export PYTHONIOENCODING=UTF-8
或者,对于Windows,set PYTHONIOENCODING=UTF-8
。
然后,再次尝试运行脚本,看看是否打印了正确的字符。
可在此处找到更多信息:How to print UTF-8 Encoded Text to the console in Python3