Мне нужно преобразовать между объектами python и строками c различных кодировок. Переход от строки c к объекту unicode был довольно простым с использованием PyUnicode_Decode, однако я не уверен, как пойти другим путем.
//char* can be a wchar_t or any other element size, just make sure it is correctly terminated for its encoding
Unicode(const char *str, size_t bytes, const char *encoding="utf-16", const char *errors="strict")
:Object(PyUnicode_Decode(str, bytes, encoding, errors))
{
//check for any python exceptions
ExceptionCheck();
}
Я хочу создать еще одну функцию, которая берет строку Unicode python и помещает ее в буфер, используя заданную кодировку, например:
//fills buffer with a null terminated string in encoding
void AsCString(char *buffer, size_t bufferBytes,
const char *encoding="utf-16", const char *errors="strict")
{
...
}
Я подозреваю, что это как-то связано с PyUnicode_AsEncodedString, однако он возвращает PyObject, поэтому я не уверен, как поместить это в мой буфер...
Примечание: оба вышеуказанных метода являются членами класса Unicode С++, который обертывает API-интерфейс Python, который я использую Python 3.0.