python2.6使用系统编码在CAPI中编写字符串

2024-05-17 07:15:28 发布

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

我有一个用python2.6编写的项目,我想用系统编码将utf-8消息写入stdout。但是,这样的函数似乎直到Python 3.2才存在:

PySys_格式输出

http://docs.python.org/dev/c-api/sys.html

Python2.6有没有一种方法可以做到这一点?在

为了澄清,我有一个横幅需要在Py_Initialize()之后和主解释器运行之前打印。该字符串是一个包含: “\n和版权所有\xC2\xA9”

其中\xC2\xA9是utf-8版权符号。我在gdb中验证了版权符号编码正确。在

更新:我只是觉得所有这些悲伤是没有必要的,我要把这个冒犯的角色从创业公司的横幅上去掉。这方面的问题太多了,而且缺少文档。我的期望是这会像Tcl一样,在那里:

  1. 嵌入式解释器的C-API将使在系统编码中以unicode编写标准输出变得容易,而不是一些默认的ascii编码
  2. 如果当前编码中不存在有问题的字符,则不会引发异常。相反,会显示一些默认的替换字符。在
  3. 附加模块(例如sys)不需要仅仅为了找出系统编码是什么而导入。在

Tags: 项目函数消息编码系统stdoutsys版权
2条回答

您可以使用PyFile_WriteObject()

f_stdout = PySys_GetObject("stdout");
text = PyUnicode_DecodeUTF8((char*)str, strlen(str), "strict");
PyFile_WriteObject(text, f_stdout, Py_PRINT_RAW);

如果您知道最终编码,那么您可以使用^{}。在

相关问题 更多 >