Python3中UnicodeEncodeError问题

问题: 

在Ubuntu服务器中运行Python3脚本时,出现如下问题:

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

 原因:

系统中所采用的的编码方式不支持中文。我们可以采用如下代码检查系统的编码方式。

import sys

print(sys.stdout.encoding)

输出为

ANSI_X3.4-1968

 并不是UTF-8,因此脚本中出现中文会报错。

解决办法:

 方法1

设置系统的环境变量,在~./bashrc文件中添加如下两行:

export LANG="zh_CN.UTF-8"
export LANG="en_US.UTF-8"

再次检查可以发现系统的编码方式为UTF-8。之前的Python3脚本可以正常运行。

方法2

运行Python3脚本时,添加参数PYTHONIOENCODING=utf-8,即

PYTHONIOENCODING=utf-8 python3 test.py

之前的Python3脚本可以正常运行。

方法3

在Python3脚本中,添加如下代码:

import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())

之前的Python3脚本可以正常运行。

你可能感兴趣的:(Python)