繁体   English   中英

如何在Python中打印非ASCII字符

[英]How to print non-ASCII characters in Python

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

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

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

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

使用repr(obj)代替str(obj) repr()会将结果转换为ASCII,正确转义不在ASCII代码范围内的所有内容。

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

fileObj = codecs.open( "someFile", "w", "utf-8" )

现在您可以将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

你如何使用unicode(object)并在类上定义__unicode__方法?

然后你知道它的unicode,你可以将它编码到任何你想要的文件。

none_ascii = '''
        ███╗   ███╗ ██████╗ ██╗   ██╗██╗███████╗███████╗ 
        ████╗ ████║██╔═══██╗██║   ██║██║██╔════╝██╔════╝ 
        ██╔████╔██║██║   ██║██║   ██║██║█████╗  ███████╗ 
        ██║╚██╔╝██║██║   ██║╚██╗ ██╔╝██║██╔══╝  ╚════██║ 
        ██║ ╚═╝ ██║╚██████╔╝ ╚████╔╝ ██║███████╗███████║ 
        ╚═╝     ╚═╝ ╚═════╝   ╚═══╝  ╚═╝╚══════╝╚══════╝ 
'''

print(none_ascii.decode('utf-8'))

我想说我在Unix系统中找到了一个解决方案,导出了一个环境var,用这个:

export LC_CTYPE =“es:ES.UTF-8”

这样,所有文件都是utf-8,所以我可以制作打印件或其他什么,它工作正常

只需将这两行粘贴到代码顶部即可

  1. #!的/ usr / local / bin目录/蟒蛇
  2. #coding:latin-1

请访问此链接了解更多详情https://www.python.org/dev/peps/pep-0263/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM