Чтобы преобразовать тип PyBytesObject в тип PyUnicodeObject в python3 - PullRequest
0 голосов
/ 17 мая 2010

Как преобразовать тип пиуникодобъекта в тип пибайтсобъекта?

Пример:

function(PyBytesObject* byteobj){
....operation..
}

PyUnicodeObject* Uniobj;

function((PyBytesObject*) Uniobj);

получил ошибку шины в результате.

1 Ответ

2 голосов
/ 17 мая 2010

Вам нужно закодировать его так же, как если бы вы делали это на Python. Для utf-8 используйте:

PyObject* PyUnicode_AsUTF8String(PyObject *unicode)

Возвращаемое значение: новая ссылка.
Кодируйте объект Unicode, используя UTF-8, и возвращайте результат как объект байтов Python. Обработка ошибок является «строгой». Вернуть NULL, если кодек вызвал исключение.

Или, если вы хотите использовать его в utf-16 или в другой кодировке, для них тоже есть api. См. Документы по http://docs.python.org/py3k/c-api/unicode.html (поиск функций начинается с PyUnicode_As).

Не забудьте проверить код возврата при кодировании и освободить ссылку на объект байтов, когда закончите с ним.

...