繁体   English   中英

使用 UCS-4 对 Python 进行 Swig 绑定

[英]Swig binding for Python using UCS-4

有谁知道是否有办法让 SWIG 将字符串编码为 Python 的 UCS-4? SWIG 文档指出这可以使用类型映射来实现,但没有提供任何其他详细信息或示例。

对于上下文,我正在使用一组 Python 脚本扩展 Blender 3D 软件。 我们需要将这些脚本与各种机器人软件连接起来,我们使用 SWIG 编译 Python 库。 Blender 使用自己的 Python 3.2 与 --with-wide-unicode 选项预编译,因此它使用 UCS-4 unicode 字符串。 但是,通过默认 SWIG 将字符串编码为 UCS-2,因此在与 Blender 交互时,我总是会遇到如下错误:“未定义的符号:PyUnicodeUCS2_*”。

这是来自 SWIG 文档,也许你已经看到了:

目前,SWIG 对 Unicode 和宽字符串(C wchar_t 类型)提供有限支持。 一些语言为 wchar_t 提供类型映射,但请记住,这些可能无法跨不同的操作系统移植。 这是一个微妙的话题,许多程序员对此知之甚少,并且没有以一致的方式跨语言实现。 对于那些提供 Unicode 支持的脚本语言,Unicode 字符串通常以 8 位表示形式提供,例如 UTF-8 可以映射到 SWIG 接口,它可能会在这种情况下工作*类型。 如果您要包装的程序使用 Unicode,则无法保证目标语言中的 Unicode 字符将使用相同的内部表示(例如,UCS-2 与 UCS-4)。 您可能需要编写一些特殊的转换函数。

因此,听起来您应该将其 map 转换为 char* ,然后在必要时弄清楚如何手动转换它。 听起来一开始就很乱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM