python - 如何使用 boost.python 提取 unicode 字符串

标签 python boost unicode boost-python

当我这样做时,代码似乎会崩溃 extract<const char*>("a unicode string")

有人知道怎么解决吗?

最佳答案

这为我编译和工作,使用您的示例字符串并使用 Python 2.x:

void process_unicode(boost::python::object u) {
  using namespace boost::python;
  const char* value = extract<const char*>(str(u).encode("utf-8"));
  std::cout << "The string value is '"<< value << "'" << std::endl;
}

你可以写a specific from-python converter ,如果您希望将 PyUnicode (@Python2.x) 自动转换为 const wchar_t* 或来自 ICU 的类型(这似乎是在 C++ 上处理 Unicode 的常见建议)。

如果您希望完全支持不在 ASCII 范围内的 unicode 字符(例如,重音字符,例如 áçï,您将需要编写来自 python 的转换器。请注意,如果您希望同时支持 Python 2.x 和 3.x,则必须分别完成此操作。对于 Python 3。 x,PyUnicode type was deprecated,现在字符串类型作为用于 Python 2.x 的 PyUnicode 工作。无法处理。

[编辑]

上面的评论是错误的。请注意,由于 Python 3.x 将 unicode 字符串视为普通字符串,boost::python 会将其包装到 boost::python::str 对象中。我还没有验证这些是如何处理的。在本例中为 unicode 翻译。

关于python - 如何使用 boost.python 提取 unicode 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6622676/

相关文章:

Python Eve 框架身份验证未应用于选定的 API

python - 如何使用 Selenium Python 点击​​元素

c++ - boost MPL : Call a (member) function only if it exists

c++ - 如何迭代两个类似 STL 的容器(笛卡尔积)

python - ascii 与 MYSQL 的 unicode 中的 SQLAlchemy 大字符串

python - 类实例初始化时出现名称错误

python - Beautifulsoup HTML表格解析——只能获取到最后一行?

c++ - unordered_map 线程安全

c++ - 如何将一个字符(ICU4C)Unicode字符串复制到另一个Unicode字符串?

unicode - 在批处理文件中使用方框图 Unicode 字符