Python 2.6 使用系统编码在 C-API 中写入字符串

标签 python unicode python-c-api

我有一个 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,其中:

  1. 嵌入式解释器的 C-API 将使系统编码中的 unicode 标准输出变得容易,而不是一些默认的 ascii 编码
  2. 如果当前编码中不存在违规字符,则不会抛出异常。相反,将显示一些默认的替换字符。
  3. 不需要导入额外的模块(例如 sys)来找出系统编码是什么。

最佳答案

关于Python 2.6 使用系统编码在 C-API 中写入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4502987/

相关文章:

python - (Python) 平均分配数字

python - pymunk中自上而下的摩擦力

python - 在python中获取系统本地时区

unicode - 智能引号被错误编码的常见方式有哪些?

python - 将\x 转义字符串转换为 UTF-8

python - python中实例变量和属性之间的区别?

python - Python 函数能否采用生成器并将生成器返回到其生成输出的子集?

c# - 读取包含 unicode 字符的文件

python - 使用 Python C-API 强制类型转换

Python C-API : How to pass an UNICODE UTF-16 null terminated C string to my python app without converting to UTF-8?