使用Python 3将存储为二进制的Unicode中文字符转换回Unicode
我正在处理一个由OpenOffice生成的.csv文件,这个文件里有混合的罗马字母和中文字符。这里有一行的例子:
b'\xe5\xbc\x80\xe5\xbf\x83'b'K\xc4\x81i x\xc4\xabn'b'Open heart 'b'Happy '
这一部分包含两个以二进制形式存储的中文字符,我希望在一个非常简单的Python 3程序的命令行上显示它们(见下面的代码),我该怎么做呢?
b'\xe5\xbc\x80\xe5\xbf\x83'b'K\xc4\x81i x\xc4\xabn'
当我在OpenOffice中打开这个.csv文件时,我需要选择“简体中文 UEC-CN”作为字符集,这样会有帮助。如果有帮助的话。我搜索了很多资料,但我对Unicode不太理解,很多页面看起来也很复杂。
import csv
f = open('Chinese.csv', encoding="utf-8")
file = csv.reader(f)
for line in file:
for word in line:
print(word.encode('utf-8'), end='')
print("\n")
提前感谢任何建议。
1 个回答
0
感谢@eryksun的建议,我通过将源文件从ASCII重新编码为UTF-8解决了我的问题。虽然问题不同,但解决方法在这里:
http://www.stackoverflow.com/a/542899/792015
另外,如果你使用的是Eclipse,可以在你的源代码中粘贴一个非罗马字符(比如一个中文字符,如大),然后保存文件。如果源文件还不是UTF-8,Eclipse会主动帮你转换成UTF-8。
感谢大家的建议,抱歉我自己回答了自己的问题。
附注:如果有人知道为什么更改源文件类型会影响编译后的程序,我很想知道。根据https://docs.python.org/3/tutorial/interpreter.html,解释器默认将源文件视为UTF-8。