Python 2和3兼容的方式来打印优雅降级的unicode

时间:2015-11-05 18:46:47

标签: python python-2.7 python-3.x unicode python-unicode

正确输出兼容Python 2和3的非ascii字符的最佳方法是什么?是这个吗?

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from __future__ import print_function
print("ȧƈƈḗƞŧḗḓ uʍop-ǝpısdn ŧḗẋŧ ƒǿř ŧḗşŧīƞɠ")

该方法的一个问题是,在输出受限(例如)到asciilatin1的情况下,它不会优雅地降级。默认行为是引发异常,如:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-7: ordinal not in range(128)

...我更喜欢逃避'replace' or 'backslashreplace' error handling methods等。有没有办法配置sys.stdout使用这些方法之一?这样做是否合理?

在StackOverflow上已经讨论了Python中的Unicode编码,例如: How to write utf8 to standard output in a way that works with python2 and python3snapshoe's answer和有用comment by Martijn Pieters。还Setting the correct encoding when piping stdout in Python

但我仍然没有看到明确的"最好的"方式,特别是关于优雅地处理错误。

0 个答案:

没有答案