蟒蛇爱好者,
我正在尝试用 C 编写一个 Python 扩展,它将大量以空字符结尾的 UNICODE UTF-16 编码的 C 字符串传递给我的 Python 应用程序。我的 C 库中的 UNICODE 字符串保证始终为 16 位。由于 wchar_t 的大小可能会有所不同,因此我没有在 LINUX 上的 C 库中使用 wchar_t。
我发现很多函数(PyUnicode_AsUTF8String、PyString_FromStringAndSize、PyString_FromString 等)完全符合我的要求,但所有这些函数都是为 8 位字符/字符串表示而设计的。
Python 文档 (http://docs.python.org/howto/unicode.html) 说:
“在底层,Python 将 Unicode 字符串表示为 16 位或 32 位整数,具体取决于 Python 解释器的编译方式。”
我真的很想避免将我所有的 UTF-16 C 字符串转换为 UTF-8 C 字符串仅用于 Python 接口的性能损失,尤其是在 Windows 上,如果 Python 解释器也使用 16 位“引擎盖下”。
任何如何应对这一挑战的想法都受到高度赞赏。
谢谢,托马斯