PythonモジュールでのUTF-8/16に関するさまざまなアプローチに悩まされています。Python Cモジュールを作成するのは初めての試みでしたが、Unicodeオブジェクトからすべてのバイトを取得してC関数でこれらを処理する方法を知りたいと思います。私が見るように、これらはC文字配列の単純なASCII文字列として表されるかもしれませんか?
static PyObject* unicode_worker(PyObject* self, PyObject* args)
{
Py_UNICODE *src;
int srclen;
register Py_UNICODE ch;
wchar_t widecharBuffer[4096];
if (! PyArg_ParseTuple(args, "u#", &src, &srclen))
return NULL;
ch = *src;
PyUnicode_AsWideChar((PyUnicodeObject *)src, widecharBuffer, srclen-1);
Py_RETURN_NONE;
}
gdbを次のように使用すると、次のようになります。
gdb python
run sh.py
エラーが表示されます:
Program received signal SIGSEGV, Segmentation fault.
0x00000036010b05c8 in PyUnicodeUCS4_AsWideChar () from /usr/lib64/libpython2.7.so.1.0
PyUnicode_AsWideChar呼び出しで何が改善される可能性があり、現在何が問題になっていますか?
UPD:Mats Petersson、問題はより明確になりました。