【发布时间】:2018-06-06 16:55:56
【问题描述】:
以下代码在我的 Windows 机器上使用 Python3 可以正常运行并打印字符“é”:
data = b"\xc3\xa9"
print(data.decode('utf-8'))
但是,在基于 Ubuntu 的 docker 容器上运行相同的结果:
UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in position 0: ordinal not in range(128)
是否需要安装任何东西才能启用 utf-8 解码?
【问题讨论】:
-
指定将给定字符串解码为 'utf-8' 无论如何都应该有效。只有当我明确指定'ascii'作为编解码器时,我才会得到你引用的错误。您的错误还暗示正在使用 ascii。我知道没有 linux 多年来默认使用 utf-8 以外的任何东西....
-
@planetmaker:Linux 肯定有一些“最小”设置默认为
LANG=C,其中print,而不是decode,会有问题。在相关的 shell 初始化文件中显式更改为LANG=en_US.utf-8(并注销然后重新登录以确保在任何地方都正确设置了区域设置)应该可以修复它。 -
@ShadowRanger 至少在 Ubuntu Xenial 上没有。我从一开始就一直使用语言环境 lv_LV.Utf-8,但 python 默认为 ascii。最近才在尝试在 CLI 中输入 unicode 时发现。在文件中总是通过注释指定编码。
标签: python linux windows python-3.x utf-8