Ошибка PyRun_SimpleString для специальных символов - PullRequest
0 голосов
/ 09 мая 2019

Я пробовал Основы встраивания Python в C ++, и когда я запускаю этот код, я получаю сообщение об ошибке «SyntaxError: (ошибка Unicode) кодек« utf-8 »не может декодировать байт 0xf4 в позиции 10: недопустимый байт продолжения».Я не могу понять, что в этом плохого.Я закодировал этот текст на Pycharm, он прекрасно работал, но не тогда, когда я пытаюсь встроить это в C ++.Заранее благодарен за помощь

PyObject* pInt;

    Py_Initialize();

    PyRun_SimpleString("txt = u\"flag_for_Côte_d’Ivoire\"\nx = txt.encode()\nprint(x)");

    Py_Finalize();

    printf("\nPress any key to exit...\n");
    if(!_getch()) _getch();
    return 0;

, если я только сделаю

PyRun_SimpleString("txt = u\"flag_for_Côte_d’Ivoire\"")

, это тоже не сработает.Версия Python, которую я использую, является Python 3.7.3 и на Windows VS 2008

1 Ответ

0 голосов
/ 13 мая 2019

Перед отправкой строки converted string to UTF8 and passed to Pyrun_simplestring() и все заработало. Так что, если вы работаете над более старой версией VS, сделайте, как сказано, и если вы работаете над новой VS, вам нужно добавить «#define PY_SSIZE_T_CLEAN» перед Python.h

ПРИМЕЧАНИЕ : - Это решение для тех, кто работает над Python 3

...