как извлечь строку unicode с boost.python

Кажется, что код сработает, когда я extract<const char*>("a unicode string")

Кто-нибудь знает, как это решить?

2 Solutions collect form web for “как извлечь строку unicode с boost.python”

Это компилируется и работает для меня, с вашей примерной строкой и с использованием 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; } 

Вы можете написать определенный из-python конвертер , если вы хотите автоматически преобразовать PyUnicode (@ Python2.x) в const wchar_t* или в тип из ICU (что, как представляется, является общей рекомендацией для работы с Unicode на C ++).

Если вам нужна полная поддержка символов юникода, которые не входят в диапазон ASCII (например, с использованием акцентированных символов, таких как á , ç или ï , вам нужно будет написать конвертер from-python. Обратите внимание, что это нужно сделать отдельно для Python 2.x и 3.x, если вы хотите поддерживать оба. Для Python 3.x тип PyUnicode был устаревшим, и теперь тип строки работает как PyUnicode используемый для Python 2.x. Ничего, что пара #if PY_VERSION_HEX >= 0x03000000 не может обрабатывать .

[редактировать]

Вышеупомянутый комментарий был неправильным. Обратите внимание, что поскольку Python 3.x обрабатывает строки unicode как обычные строки, boost::python будет обертывать это в объекты boost::python::str . Я не проверял, как в этом случае обрабатываются переводы unicode.

Ты пробовал

 extract<std::string>("a unicode string").c_str() 

или

 extract<wchar_t*>(...) 
  • Как заменить символы Unicode символами ascii в Python (заданный perl-скрипт)?
  • Поиск символов Юникода в Python
  • Набор символов набора для установки pyMySQL
  • Google App Engine: UnicodeDecodeError: кодек ascii не может декодировать байт 0xe2 в позиции 48: порядковый номер не в диапазоне (128)
  • Django создает CSV-файл, который содержит Unicode и может быть открыт непосредственно с помощью Excel
  • Регулярное выражение с unicode и str
  • Как получить имя месяца в юникоде в Python?
  • Где находится «лучшая ASCII Python для этой Unicode»?
  • Python - лучший язык программирования в мире.