美文网首页
'ascii' codec can't encode chara

'ascii' codec can't encode chara

作者: 杨永杰 | 来源:发表于2019-03-11 11:56 被阅读0次

    最近遇到一个问题,新建的一个镜像里面跑的代码无法支持中文。错误如下:
    'ascii' codec can't encode character '\u82b1' in position 0: ordinal not in range(128)


    error.png

    1、代码encoding

    第一反应是代码里面没有做好中文的encoding,但仔细检查之后发现代码没有问题,并且代码在其他环境上是能跑的

    2、镜像打入的包版本不对

    又看了一下镜像里打入的依赖包,和我在其他机器上用的不一样,有可能包版本导致的,虽然可能性不大,只能硬着头皮试一下,over


    error.png

    3、python里输入输出语言编码不对

    好吧,都怀疑到python上了,主要看看python中调用了什么系统编码


    image.png

    oh, 貌似设置也没啥问题

    4、系统LC_ALL设置

    细看错误'ascii' codec can't encode character '\u82b1' in position 0,代码中、python设置无论哪里都没有设置ascii编码,可以猜测在执行到这一步的时候,默认采用了ascii编码,只能想到系统语言设置上去了,果然是这样的。
    LC_ALL实际包含12个LC_*的设置

    LC_CTYPE="en_US.UTF-8"
    LC_NUMERIC="en_US.UTF-8"
    LC_TIME="en_US.UTF-8"
    LC_COLLATE="en_US.UTF-8"
    LC_MONETARY="en_US.UTF-8"
    LC_MESSAGES="en_US.UTF-8"
    LC_PAPER="en_US.UTF-8"
    LC_NAME="en_US.UTF-8"
    LC_ADDRESS="en_US.UTF-8"
    LC_TELEPHONE="en_US.UTF-8"
    LC_MEASUREMENT="en_US.UTF-8"
    LC_IDENTIFICATION="en_US.UTF-8"
    

    对,就要要设置这个东西,设置的办法网上很多,正常只需要export LC_ALL="en_US.UTF-8", 若出现

    bash: warning: setlocale: LC_ALL: cannot change locale (en_AU.UTF-8)
    

    错误,可以按下面这样配置。

    locale-gen "en_US.UTF-8"
    dpkg-reconfigure locales
    export LC_ALL="en_US.UTF-8"
    

    完事,这是设置系统的默认语言和编码方式。
    这是根音根音根音
    done

    相关文章

      网友评论

          本文标题:'ascii' codec can't encode chara

          本文链接:https://www.haomeiwen.com/subject/gzpvpqtx.html