gpt4 book ai didi

Python3 utf-8 解码问题

转载 作者:IT王子 更新时间:2023-10-29 01:04:46 27 4
gpt4 key购买 nike

以下代码在我的 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 解码?

最佳答案

似乎 ubuntu - 取决于版本 - 默认使用一种编码或另一种编码,并且它也可能在 shell 和 python 之间有所不同。取自 this posting还有this blog :

因此推荐的方法似乎是告诉你的 python 实例使用 utf-8 作为默认编码:

通过环境变量设置 python 源文件的默认编码:

export PYTHONIOENCODING=utf8

此外,在您的源文件中,您可以明确声明您希望使用的编码,因此无论环境设置如何,它都应该可以工作(参见 this question + answerpython docsPEP 263:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
....

关于python读取文件编码的解释,可以在open命令中明确指定

with open(fname, "rt", encoding="utf-8") as f:
...

还有一种更 hackish 的方式有一些副作用,但可以让您每次都明确指定它

import sys
# sys.setdefaultencoding() does not exist, here!
reload(sys) # Reload does the trick!
sys.setdefaultencoding('UTF8')

请阅读 related answer 中有关此黑客攻击的警告。和评论。

关于Python3 utf-8 解码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47968578/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com