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

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

但本机是可以运行的.

查找原因发现是: 系统环境语言导致.

[1] - 查看系统环境的编码:

import sys
sys.stdout.encoding

Ubuntu 服务器和本机输出分别为:

# Ubuntu 服务器
ANSI_X3.4-1968

# 本机
UTF-8

[2] - 问题解决:

<1> - 方法1

设置系统环境变量,编辑 ~/.bashrc 文件,添加如下:

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

<2> - 方法2

运行 python 脚本时,添加参数:PYTHONIOENCODING=utf-8. 如:

PYTHONIOENCODING=utf-8 python3 demo.py

参考:https://docs.python.org/3.6/using/cmdline.html#envvar-PYTHONIOENCODING

<3> - 方法3

在待运行的 python 脚本中,添加如下代码:

import sys
import codecs
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
print('测试(中文)')
Last modification:January 8th, 2019 at 01:34 pm