当前位置: 首页 > 面试题库 >

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

臧烨烁
2023-03-14
问题内容

我有一个相当大的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编码。效果很好。


问题答案:

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



 类似资料:
  • 我有一个数据库,它存储带有Unicode字符的视频游戏名称,但我不知道如何在将这些Unicode字符打印到超文本标记语言响应时正确转义它们。 例如,当我打印所有名为Uncharted的游戏时,我会得到以下信息: 但它应该显示以下内容: 我运行了一个快速的JavaScript转义函数,查看哪个Unicode字符™并发现它是。 如果我能得到字符以正确显示。我的猜测是以某种方式找到字符串中每个字符的十六

  • 问题内容: 我正在使用BeautifulSoup从HTML提取一些文本,但是我只是想不出如何正确地将其打印到屏幕(或与此相关的文件)上。 这是我的包含文本的类的样子: 当尝试打印一个实例时,这是我在控制台上看到的: 无论我尝试什么,都无法获得想要的输出(上面的文本应该是希伯来语)。我的最终目标是序列化到文件(使用json或pickle)并能够将其读回。 我在Ubuntu 10.10上使用Pytho

  • 问题内容: 这肯定是一件容易的事,但这确实困扰着我。 我有一个脚本,可以读取网页并使用Beautiful Soup对其 进行解析。我从 汤中 提取所有链接,因为我的最终目标是打印出link.contents。 我要解析的所有文本都是ASCII。我知道Python将字符串视为unicode,并且我确信这非常方便,在我的wee脚本中没有用。 每次我去打印一个包含’String’的变量时,我都会被打印到

  • 问题内容: 如果我有以下形式的字典: 然后我写 我懂了 如预期的那样。但是如果我写 我懂了 ,但我希望打印字符本身。 无论如何,所有数据最终都将最终转储到数据库中,因此解决此问题并不关键,但是对于调试来说,如果我在打印整个字典时能得到可读的输出,那就太好了。有什么办法吗? 对于那些好奇的人,脚本是格鲁吉亚语,是的,它说“ bar”。 问题答案: 这在我的终端中有效:

  • 问题内容: 我正在尝试打印所有填充为相同宽度的字符串列表。 在C语言中,我将使用cstr是C字符串的方式。 在Swift中,我能想到的最好的方法是: 有没有更好的办法 ? 问题答案: 对于Swift> = 3 对于Swift <3 有方法:

  • 问题内容: 我有一个Unicode转义的字符串: 我想将此字符串转换为unicode非转义版本 我该怎么做呢? 问题答案: 对其进行编码(使用任何编解码器,utf-8可能都可以),然后使用对其进行解码: