как извлечь строку 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*>(...) 
  • Python, len и slices для строк Unicode
  • Python с проблемами юникода MySql
  • Невозможно использовать unichr в Python 3.1
  • Печать в терминале цветами с использованием Python?
  • Кодировка Unicode для файловой системы в Mac OS X неверна в Python?
  • UnicodeDecodeError: кодек 'utf8' не может декодировать байты в позиции 3-6: неверные данные
  • Как изменить строку на Unicode в Python 2?
  • Преобразование данных Unicode в int в python
  • Как символизировать слово малаялам?
  • Лучший способ декодировать неизвестную кодировку Unicoding в Python 2.5
  • Как сделать Python split () на языках (например, китайском), которые не используют пробелы в качестве разделителя слов?
  •  
    Interesting Posts for Van-Lav

    Автоматический экспорт Spotfire

    Получение URL-адреса с сервера Jenkins, защищенного базой данных, с помощью urllib2

    Точность ухудшается, чем дольше я тренирую модель Keras. Любые советы будут высоко оценены

    В чем разница между «диапазоном (0,2)» и «списком (диапазон (0,2))»?

    Может ли unittest разрешить тестирование одного случая / пакета через «setup.py test»?

    Каков самый простой способ достижения графика в реальном времени в pyqtgraph

    Python: multiprocessing.map: если один процесс вызывает исключение, почему не называются блоки finally, называемые другими процессами?

    Почему объект .__ new__ работает по-разному в этих трех случаях

    Как установить размер шрифта заголовка рисунка и оси в Matplotlib?

    strip () и strip (string.whitespace) дают разные результаты, несмотря на документацию, предполагающую, что они должны быть одинаковыми

    MissingSectionHeaderError: Файл не содержит заголовков разделов

    Как легко распространять программное обеспечение Python с зависимостями модуля Python? Разочарование в установке пакета Python в Unix

    Массив SimpleJSON и NumPy

    доступ к заголовкам запроса на django / python

    Фон Tkinter Frame исчезает, когда я связываю с ним ярлык

    Python - лучший язык программирования в мире.