小编典典

Linux / Python:对要打印的Unicode字符串进行编码

linux

我有一个相当大的python
2.6应用程序,上面散布着许多打印语句。我一直在使用unicode字符串,通常效果很好。但是,如果我重定向应用程序的输出(例如“ myapp.py>
output.txt”),则有时会出现如下错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xa1' in position 0: ordinal not in range(128)

我猜如果有人将LOCALE设置为ASCII也会出现相同的问题。现在,我完全理解此错误的原因。我的Unicode字符串中有些字符无法用ASCII编码。很公平。但是我希望我的python程序尽最大的努力来尝试打印可理解的内容,例如跳过可疑字符或将其替换为Unicode
id。

这个问题一定很普遍。解决这个问题的最佳实践是什么?我希望可以继续使用普通的旧“打印”的解决方案,但如有必要,我可以修改所有出现的情况。

PS:我现在已经解决了这个问题。
解决方案都不是给出的答案。我使用了http://wiki.python.org/moin/PrintFails中给出的方法,该方法是ChrisJ在其中一项注释中给出的。也就是说,我将sys.stdout替换为一个包装器,该包装器使用正确的参数调用unicode编码。效果很好。


阅读 408

收藏
2020-06-07

共1个答案

小编典典

我现在已经解决了这个问题。解决方案都不是给出的答案。我使用了http://wiki.python.org/moin/PrintFails中给出的方法,该方法是ChrisJ在其中一项注释中给出的。也就是说,我将sys.stdout替换为一个包装器,该包装器使用正确的参数调用unicode编码。效果很好。

2020-06-07