首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python :如何将UNICODE UTF-16空终止的C字符串传递给我的python应用程序而不转换为UTF-8?

Python :如何将UNICODE UTF-16空终止的C字符串传递给我的python应用程序而不转换为UTF-8?
EN

Stack Overflow用户
提问于 2012-04-06 08:04:12
回答 1查看 742关注 0票数 3

毕多尼斯,

我正在尝试用C编写一个Python扩展,它将大量以null结尾的UNICODE UTF-16编码C字符串传递给我的Python应用程序。我的C库中的UNICODE字符串始终是16位。我没有在LINUX上的C库中使用wchar_t,因为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位“下盖”。

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

谢谢,托马斯

EN

回答 1

Stack Overflow用户

发布于 2012-04-06 08:11:09

您无法避免复制数据(除非您突破Python ),但是您可以使用PyUnicode_DecodeUTF16直接从UTF-16数据创建Python对象;参见http://docs.python.org/c-api/unicode.html#utf-16-codecs

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10040800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档