gpt4 book ai didi

docker - Python3 utf8编解码器未按预期在Docker ubuntu中解码:trusty

转载 作者:行者123 更新时间:2023-12-02 18:24:58 28 4
gpt4 key购买 nike

以下内容确实使我很烦,笔记本电脑上的python版本和Docker的ubuntu:trusty镜像中的python版本正在使用其编解码器打印不同的结果,这是什么原因?
例如,我的笔记本电脑上的python3(ubuntu,trusty):

Python 3.4.3 (default, Apr 14 2015, 14:16:55) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import codecs
>>> codecs.decode(b'\xe2\x80\x99','utf8')
'’'
>>>

Docker上的python3 ubuntu:latest:
Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import codecs
>>> codecs.decode(b'\xe2\x80\x99','utf8')
'\u2019'
>>>

我可以在Docker的ubuntu上制作python3编解码器吗:可信任地将b'\ xe2 \ x80 \ x99'解码为'’。

最佳答案

这听起来像语言环境配置问题。 Python在这两个位置的行为可能有所不同,因为运行它的终端 session 配置不同。

检查您的Ubuntu Docker计算机上的locale设置,以确保您在终端 session 中处于UTF-8语言环境。特别要注意的是,您是否已将C切换到CTYPE。 (我之前已经在服务器上看到过,尽管不知道为什么会发生。)这可能对Python控制台是否将其视为可打印字符以及是否将其显示为自身或转义序列有所不同。这也会影响其他终端程序。

我可以通过摆弄区域设置在OS X的Python 3.4.0中重现此行为。

[@ in ~]
$ locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=
[@ in ~]
$ python3.4
Python 3.4.0 (v3.4.0:04f714765c13, Mar 15 2014, 23:02:41)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import codecs
>>> codecs.decode(b'\xe2\x80\x99','utf8')
'’'
>>> quit()
[@ in ~]
$ LC_CTYPE=C python3.4
Python 3.4.0 (v3.4.0:04f714765c13, Mar 15 2014, 23:02:41)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import codecs
>>> codecs.decode(b'\xe2\x80\x99','utf8')
'\u2019'
>>> quit()

如果是您的语言环境设置,则需要在Docker Ubuntu实例上设置rc文件,以将您的语言环境配置为适合您的UTF-8语言环境,或者获取您的语言环境设置以通过SSH或任何连接方法传播您正在使用,以便在那里配置您的远程终端 session 。通过连接传播区域设置可能更有意义,因为它可以将其修复为您也连接到的其他服务器或帐户。

关于docker - Python3 utf8编解码器未按预期在Docker ubuntu中解码:trusty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29740662/

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