-1
我在Python模塊中遇到了關於UTF-8/16的不同方法。這是我第一次嘗試編寫Python C模塊,我想知道如何從Unicode對象中獲取所有字節,並用C函數處理它們。正如我所看到的,這些可能被表示爲C char數組中的簡單ASCII字符串?用於處理unicode字符串的Python 2.7/3 C模塊
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,現在問題更加清楚了。
你試過了嗎?究竟出了什麼問題? –