运行 python3 通过 apache wsgi 编码时显示 ascii 编解码器错误
ascii codec error is showing while running python3 code via apche wsgi
Objective: 将日语文本插入 .ini 文件
步骤:
- Python版本使用3.6,使用Flask框架
- 用于编写配置文件的库是Configparser
问题:
当我通过 "flask run" 命令尝试 运行 代码时,没有任何问题。日语文本已正确插入到 ini 文件中
但是当我通过 apache(wsgi) 尝试 运行 相同的代码时,我收到以下错误
'ascii' 编解码器无法对位置 17-23 中的字符进行编码:序号不在范围内 (128)
切勿在未明确指定编码的情况下与文本文件交互。
可悲的是,甚至 Python 的 official documentation 也忽略了遵守这个简单的规则。
import configparser
config_path = 'your_file.ini'
config = configparser.ConfigParser()
with open(config_path, encoding='utf8') as fp:
config.read_file(fp)
with open(config_path, 'w', encoding='utf8') as fp:
config.write(fp)
utf8
是存储 Unicode 字符的合理选择,如果您有偏好,请选择不同的编码。
日语字符在 UTF-8 中每个字符最多占用五个字节,选择 utf16
(每个字符始终两个字节)可以生成更小的 ini
文件,但没有功能差异。
Objective: 将日语文本插入 .ini 文件
步骤:
- Python版本使用3.6,使用Flask框架
- 用于编写配置文件的库是Configparser
问题:
当我通过 "flask run" 命令尝试 运行 代码时,没有任何问题。日语文本已正确插入到 ini 文件中 但是当我通过 apache(wsgi) 尝试 运行 相同的代码时,我收到以下错误 'ascii' 编解码器无法对位置 17-23 中的字符进行编码:序号不在范围内 (128)
切勿在未明确指定编码的情况下与文本文件交互。
可悲的是,甚至 Python 的 official documentation 也忽略了遵守这个简单的规则。
import configparser
config_path = 'your_file.ini'
config = configparser.ConfigParser()
with open(config_path, encoding='utf8') as fp:
config.read_file(fp)
with open(config_path, 'w', encoding='utf8') as fp:
config.write(fp)
utf8
是存储 Unicode 字符的合理选择,如果您有偏好,请选择不同的编码。
日语字符在 UTF-8 中每个字符最多占用五个字节,选择 utf16
(每个字符始终两个字节)可以生成更小的 ini
文件,但没有功能差异。