如何在Python中打印非ASCII字符

4 python extended-ascii

当我在Python中打印(或写入文件)非ASCII字符时,我遇到了问题.我已经通过覆盖str我自己的对象中的方法来解决它,并在其中创建"x.encode('utf-8')",其中x是对象内部的属性.

但是,如果我收到第三方对象,并且我创建了"str(object)",并且此对象内部有非ASCII字符,则它将失败.

所以问题是:有没有办法告诉str方法该对象有一个UTF-8编码,一般来说?我正在使用Python 2.5.4.

Aar*_*lla 8

没有办法str()在Python <3.0中使用Unicode.

repr(obj)而不是str(obj).repr()将结果转换为ASCII,正确转义不在ASCII代码范围内的所有内容.

除此之外,使用允许unicode的文件对象.所以不要在输入端编码,而是在输出端编码:

fileObj = codecs.open( "someFile", "w", "utf-8" )
Run Code Online (Sandbox Code Playgroud)

现在您可以编写unicode字符串,fileObj并根据需要进行转换.为了实现同样的目的print,你需要包装sys.stdout:

import sys, codecs, locale
print str(sys.stdout.encoding)
sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout)
line = u"\u0411\n"
print type(line), len(line)
sys.stdout.write(line)
print line
Run Code Online (Sandbox Code Playgroud)


小智 2

我想说我在 Unix 系统中找到了一个解决方案,导出环境变量,如下:

导出 LC_CTYPE="es:ES.UTF-8"

这样,所有文件都是 utf-8 格式,因此我可以进行打印或其他任何操作,并且效果很好