Ошибка Pyrun_simplestring для специальных символов
Я пробовал основы встраивания Python в C++, и когда я запускаю этот код, я получаю ошибку
"SyntaxError: (ошибка unicode) кодек 'utf-8' не может декодировать байт 0xf4 в позиции 10
: недопустимый байт продолжения". Я не могу понять, что в этом плохого. Я закодировал этот txt на Pycharm, он работал отлично, но не тогда, когда я пытаюсь встроить его в C++. Заранее благодарю за помощь
PyObject* пинта;
Py_Initialize();
PyRun_SimpleString (расширение"txt = у\"flag_for_Côte_d Ивуара\"\ПХ = тхт.кодирование()\nprint(х)");
Py_Finalize();
printf("\n нажмите любую клавишу для выхода...\n");
если(!_getch()) _getch();
возвращает 0;
если бы я только знал
PyRun_SimpleString("txt = u\"flag_for_Côte_d Ivoire\"")
он терпит неудачу и для этого тоже. Версия Python, которую я использую, - это Python 3.7.3
Что я уже пробовал:
У меня есть разные методы кодирования. Не удалось найти ничего в документах, связанных с PyRun_simplestring.Версия Python, которую я использую, - это Python3.7.3
Richard MacCutchan
Где находится строка с символом 0xf4?
Member 13703287
""этот символ-0xf4. вы можете проверить https://www.rapidtables.com/convert/number/hex-to-ascii.html здесь
Richard MacCutchan
Попробуйте изменить u
приставка к u8
.
Member 13703287
Я пробовал это не поддерживается в Windows я думаю потому что это дает неверный синтаксис
ошибка. Я работаю над VS 2008.
Richard MacCutchan
VS2008 сейчас очень стар и не поддерживает последний стандарт C++. Вам нужно перейти на 2017 год.
Member 13703287
при использовании с Python 2.7 PyRun_SimpleString работает отлично и принимает ту же строку, тогда как при использовании с Python 3.7.3 он терпит неудачу
Richard MacCutchan
Извините, но у меня нет никаких идей на этот счет.
Member 13703287
Спасибо тебе за помощь, Ричард. Я попробовал с Python 3.0.0, и это не удалось, что показывает, что эта ошибка или ограничение было введено с Python версии 3.0.0 для встраивания с C++
Richard MacCutchan
Смотрите мое решение ниже.