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位“隐藏”的话。在
任何关于如何应对这一挑战的想法都是高度赞赏的。在
谢谢, 托马斯
您无法避免复制数据(除非您突破了pythoncapi),但是您可以使用
PyUnicode_DecodeUTF16
;请参见http://docs.python.org/c-api/unicode.html#utf-16-codecs直接从UTF-16数据创建Python unicode对象。在相关问题 更多 >
编程相关推荐