我有一个 Python 2.6 项目,我想使用系统编码将 utf-8 消息写入标准输出。然而,似乎直到 Python 3.2 才存在这样的函数:
PySys_FormatStdout
http://docs.python.org/dev/c-api/sys.html
有没有办法从 Python 2.6 做到这一点?
为了澄清,我有一个横幅需要在 Py_Initialize() 之后和主解释器运行之前打印。该字符串是一个包含以下内容的 c 字面量:“\n and Copyright \xC2\xA9”
其中 \xC2\xA9 是 utf-8 版权符号。我在 gdb 中验证了版权符号的编码是否正确。
更新: 我刚刚决定所有这些悲伤都是不必要的,我将从启动横幅中删除冒犯性的角色。这个问题太多了,而且缺乏文档。我的期望是这会像 Tcl 一样,其中:
- 嵌入式解释器的 C-API 将使在系统编码中以 unicode 编写标准输出变得容易,而不是一些默认的 ascii 编码
- 如果当前编码中不存在违规字符,则不会引发异常。相反,将显示一些默认替换字符。
- 额外的模块(例如 sys)不需要仅仅为了找出系统编码是什么而导入。