我有一个 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 和版权\xC2\xA9”
其中\xC2\xA9 是 utf-8 版权符号。我在 gdb 中验证了版权符号的编码是否正确。
更新: 我刚刚决定所有这些悲伤都是不必要的,我将从启动横幅中删除违规字符。这方面的问题太多了,而且缺乏文档。我的期望是这会像 Tcl,其中:
- 嵌入式解释器的 C-API 将使系统编码中的 unicode 标准输出变得容易,而不是一些默认的 ascii 编码
- 如果当前编码中不存在违规字符,则不会抛出异常。相反,将显示一些默认的替换字符。
- 不需要导入额外的模块(例如 sys)来找出系统编码是什么。
最佳答案
关于Python 2.6 使用系统编码在 C-API 中写入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4502987/