在Python的C扩展中,我可以使用Py_BuildValue()
将Conver char字符串转换为Python Value,如下所示:Py_BuildValue("s", str)
。但是,如果字符串是wchar数组,则无法使用Py_BuildValue("s", str)
。
我想我可以像这样使用PyUnicode:
PyObject* pb=PyUnicode_FromUnicode( (const Py_UNICODE*)(str), wcslen(str) );
PyObject *val = Py_BuildValue("o", pb);
但是,它不起作用。如何将wchar字符串转换为Python值?
答案 0 :(得分:2)
我认为您无需合并PyUnicode_FromUnicode
和Py_BuildValue
。
以下pb
已经是Python unicode对象。
PyObject* pb=PyUnicode_FromUnicode( (const Py_UNICODE*)(str), wcslen(str) );
使用Py_BuildValue
来处理它是多余的,但它是无害的。
我认为您的问题是由格式错误o
引起的。它应该是O
。
您还可以使用Py_BuildValue
将Unicode(UCS-2或UCS-4)数据的以null结尾的缓冲区转换为Python Unicode对象。
例如:
const wchar_t *w = L"Hello world!";
PyObject* pb = Py_BuildValue("u", w);
更多