虽然我在其他地方找不到任何提及,但似乎Python 2.7自动将文本转换为终端编码,而不是按预期抛出错误.
Python 2.7:
> echo $LANG
en_US.UTF-8
> python -c 'import sys; print sys.getdefaultencoding()'
ascii
> python -c 'import sys; sys.stdout.write(u"\u03A3")'
?
> python -c 'import sys; sys.stdout.write(u"\u03A3".encode("utf8"))'
?
Run Code Online (Sandbox Code Playgroud)
Python 2.6 (在另一个盒子上)
> echo $LANG
en_US.UTF-8
> python -c 'import sys; print sys.getdefaultencoding()'
ascii
> python -c 'import sys; sys.stdout.write(u"\u03A3")'
Traceback (most recent call last):
File "<string>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec cant encode character u'\u03a3' in position 0: ordinal not in range(128)
> python -c 'import sys; sys.stdout.write(u"\u03A3".encode("utf8"))'
?
Run Code Online (Sandbox Code Playgroud)
在任何情况下,输出前的数据上的.encode("utf8")都应该避免这个问题.
| 归档时间: |
|
| 查看次数: |
2580 次 |
| 最近记录: |