我的问题是,我可以将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
答案 0 :(得分:3)
因为您的终端设置为使用UTF-8,所以Python知道如何在直接写入终端时对Unicode字符进行编码。但是,在写入文件时,没有指定编码,因此Python默认为ASCII。要写入该文件,您需要显式指定字节编码。
python -c 'print u"\u5000".encode("UTF-8")' >a.out
答案 1 :(得分:1)
问题实际上是Python。解决方案是设置PYTHONIOENCODING = utf_8。