【问题标题】:Setting stdout UTF8 encoding with Python3 [duplicate]使用 Python3 设置标准输出 UTF8 编码 [重复]
【发布时间】:2020-09-05 03:43:18
【问题描述】:

我已经仔细阅读了Setting the correct encoding when piping stdout in Python 的回答,但是:

  • 如果您不自己调用该过程,解决方案 export PYTHONIOENCODING=utf8 将不起作用。示例:here 进程是从 Apache + mod_cgi 调用的,在 Bash 中运行 export PYTHONIOENCODING=utf8 不会改变任何内容;我还有import sys; print(str(sys.stdout.encoding))ANSI_X3.4-1968

  • 解决办法

    import sys, codecs
    sys.stdout = codecs.getwriter('utf8')(sys.stdout)
    

    可能适用于 Python 2.7,但实际上不适用于 Python 3,因为那时,print(s) 期望 s 是字节,这不是很方便

我们是否应该使用永久export PYTHONIOENCODING=utf8的方式系统的所有进程(即是持久的,即使在重新启动后也是如此),如果可以怎么办?

【问题讨论】:

    标签: python python-3.x encoding utf-8 io


    【解决方案1】:

    经过进一步研究,解决方案是在.htaccess文件中使用SetEnv PYTHONIOENCODING utf8,详见此处:mod_cgi + utf8 + Python3 produces no output

    对于其他进程,将PYTHONIOENCODING=utf8 放在/etc/environment 中以保持持久性可能会很有趣(不确定它是否适用于所有可能调用 Python 脚本的进程)。

    【讨论】:

      猜你喜欢
      • 2011-07-11
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多