gpt4 book ai didi

python - POSIX语言环境,UnicodeDecodeError

转载 作者:行者123 更新时间:2023-12-02 20:49:33 26 4
gpt4 key购买 nike

打开一个docker实例(例如docker run -ti ubuntu:16.04),创建Python文件a.py

# -*- coding: utf-8 -*-
a = 'ö'

r.py
with open('a.py') as f: exec(f.read())

当执行 python r.py时,全部是文件。但是,当使用 python3时,会让人恐惧
Traceback (most recent call last):
File "r.py", line 2, in <module>
exec(f.read())
File "/usr/lib/python3.5/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 31: ordinal not in range(128)

奇怪的是,我只能在docker上复制它。

关于可能出了什么问题以及如何解决的任何提示? (请注意,我只能修改 r.py。)

最佳答案

内部docker和外部docker之间的区别可能是LANG环境变量-许多基本镜像默认未设置LANG(或LANG=C等)。设置一个明确的LANG=en_US.UTF-8将导致open正确解码源(在python 3中)。如果您想要python2中的python 3行为,则可以import io并使用io.open

python2 / python3中的exec也允许bytes

避免编码问题的一种方法是从磁盘读取字节形式的源:

with open('a.py', 'rb') as f:
exec(f.read())

关于python - POSIX语言环境,UnicodeDecodeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43005364/

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