小编cla*_*800的帖子

无论环境如何,都在python中打印unicode字符串

我正在尝试找到一个通用的解决方案来从python脚本中打印unicode字符串.

要求是它必须在任何平台上的python 2.7和3.x以及任何终端设置和环境变量(例如LANG = C或LANG = en_US.UTF-8)中运行.

python打印功能在打印时自动尝试编码为终端编码,但如果终端编码为ascii则失败.

例如,以下在环境"LANG = enUS.UTF-8"时有效:

x = u'\xea'
print(x)
Run Code Online (Sandbox Code Playgroud)

但是当"LANG = C"时,它在python 2.7中失败了:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xea' in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

以下工作无论LANG设置如何,但如果终端使用不同的unicode编码,则无法正确显示unicode字符:

print(x.encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)

如果可能的话,期望的行为是始终在终端中显示unicode,如果终端不支持unicode,则显示一些编码.例如,如果终端仅支持ascii,则输出将为UTF-8编码.基本上,目标是在python打印功能工作时做同样的事情,但是在打印功能失败的情况下,使用一些默认编码.

python unicode encoding utf-8

8
推荐指数
2
解决办法
4012
查看次数

标签 统计

encoding ×1

python ×1

unicode ×1

utf-8 ×1