使用Python将Unicode写入文件

4

我的问题是,我可以将Unicode字符输出到终端,但无法输出到文件中。演示:

user@ubuntu:~$ python -c 'print u"\u5000"'
倀
user@ubuntu:~$ python -c 'print u"\u5000"' >a.out
Traceback (most recent call last):
  File "<string>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u5000' in position 0: ordinal not in range(128)

"locale" 的输出结果:

LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
2个回答

4

因为您的终端设置为使用UTF-8,所以当直接写入终端时,Python知道如何对Unicode字符进行编码。然而,当写入文件时,没有指定编码,因此Python默认使用ASCII编码。要写入文件,需要显式指定字节编码。

python -c 'print u"\u5000".encode("UTF-8")' >a.out

1
问题实际上出在Python上。解决方法是设置PYTHONIOENCODING=utf_8。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接