在apache上启动时,如何将utf8发送到pipes.Template().open()?

2024-05-19 13:24:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过pipes标准库编写一些重音字符。python 2没有问题,但python 3通过apache失败:

在我的终端上,我没有问题,因为文件对象是用UTF-8编码自动初始化的:

In[1]: pipes.Template().open('mypipe','w')
Out[1]: <_io.TextIOWrapper name='mypipe' mode='w' encoding='UTF-8'>

但是当apache(在django视图中)启动相同的命令时,我得到:

pipes.Template().open('mypipe','w')
<_io.TextIOWrapper name='mypipe' mode='w' encoding='ANSI_X3.4-1968'>

“ANSI_X3.4-1968”从何而来,以及如何将其强制为“utf-8”

注意:当我使用write()时,我只能传递python3字符串,而不能传递编码的utf-8字节

注意2:文件对象__init__()没有“encoding”参数,其属性“encoding”是只读的

注3:我找到的唯一非python解决方案是配置wsgi语言环境和语言:

WSGIDaemonProcess myapp user=apache group=apache processes=4 threads=1 lang=en_US.UTF-8 locale=en_US.UTF-8

Tags: 文件对象nameio编码modeapachetemplate