Python CAPI:如何将UNICODE UTF16以空结尾的C字符串传递到Python应用程序而不转换为UTF8?

2024-09-25 02:27:50 发布

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

Python

我试图用C编写一个Python扩展,它将大量以null结尾的UNICODE UTF-16编码的C字符串传递到Python应用程序。我的C库中的UNICODE字符串被保证总是16位。我没有在LINUX上的C库中使用wchar毖t,因为wchar毖的大小可能会有所不同。在

我发现有很多函数(PyUnicode_AsUTF8String、PyString_FromStringAndSize、PyString_FromString等等)完全可以满足我的需要,但所有这些函数都是为8位字符/字符串表示而设计的。在

Python文档(http://docs.python.org/howto/unicode.html)说:

"Under the hood, Python represents Unicode strings as either 16- or 32-bit integers, depending on how the Python interpreter was compiled."

我非常希望避免将所有UTF-16c字符串转换成UTF-8c字符串只用于Python接口,尤其是在Windows上,如果Python解释器也使用16位“隐藏”的话。在

任何关于如何应对这一挑战的想法都是高度赞赏的。在

谢谢, 托马斯


Tags: the函数字符串应用程序编码linux结尾unicode