【发布时间】:2016-11-23 18:35:03
【问题描述】:
这是我的脚本的精简内容:
print u"w\xa0p"
将打印“w”字符,后跟一个不间断空格,然后将“p”打印到 TTY。然而,当这个脚本被传递到管道时,例如
python script.py | cat
(管道右边的确切命令并不重要,只要将python命令传递到UNIX管道上),python会报这种错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 1: ordinal not in range(128)
谁能解释为什么会发生这个错误,以及如何缓解它?显然有一个不同的编解码器,我想我们可以使用unidecode 包来以字符精度为代价来缓解这个问题;但我想知道如果输出管道正在使用中,我们是否可以强制 python 打印出 utf-8 字符。
【问题讨论】: