当前位置: 代码迷 >> 综合 >> 【Python】print 中文报错:UnicodeEncodeError: 'ascii' codec can't encode characters
  详细解决方案

【Python】print 中文报错:UnicodeEncodeError: 'ascii' codec can't encode characters

热度:73   发布时间:2024-01-25 23:36:26.0

问题

多台Linux机器运行python程序,其中某一台报错,而其他几台正常,代码中已加入#coding=utf-8。

UnicodeEncodeError: 'ascii' codec can't encode characters in position 29-32: ordinal not in range(128)

既然有的机器可以正常输出,所以猜想是系统语言的问题,通过locale -a命令发现,出错机器的编码是 zh_CN.utf8 ,而正常输出的机器的编码中有 en_US.utf8 ,所以猜想出问题的机器的语言环境应该有缺少

解决

1.安装语言包

sudo apt-get -y install language-pack-zh-hans

locale -a 查看,已安装上en_US.utf8

2.设置环境变量LANG

在linux或Mac上设置环境变量的方式一样

vim ~/.bash_profile
export LANG="en_US.UTF-8"

保存退出后重新打开命令行控制台

3.使用PYTHONIOENCODING

在运行python命令前添加参数

PYTHONIOENCODING=utf-8 python test.py

4.在代码中添加 sys.stdout = codecs.getwriter(“utf-8”)(sys.stdout.detach()) ,使代码变为:

import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
print('中文')
  1. ‘中文’.encode(‘utf-8’)

参考

https://www.cnblogs.com/telwanggs/p/10383702.html
https://blog.csdn.net/u011415481/article/details/80794567
https://blog.csdn.net/j___t/article/details/97705231

  相关解决方案