小编Sva*_*alF的帖子

Python C API unicode参数

我有一个简单的python脚本

import _tph
str = u'??????, <b>???!</b>' # Some unicode string with a russian characters
_tph.strip_tags(str)
Run Code Online (Sandbox Code Playgroud)

和C库,编译成_tph.so.这是一个strip_tags功能:

PyObject *strip_tags(PyObject *self, PyObject *args) {
    PyUnicodeObject *string;
    Py_ssize_t length;

    PyArg_ParseTuple(args, "u#", &string, &length);
    printf("%d, %d\n", string->length, length);

    // ...
}
Run Code Online (Sandbox Code Playgroud)

printf功能打印这个:1080,19.所以,str长度实际上是19个符号,但是从地狱深处我得到的那些1080个字符?

当我打印时string,我得到了我的strnull char,然后是很多垃圾字节.

垃圾内存看起来像这样:

u'\ u041f\u0440\u0438\u0432\u0435\u0442,<b>\u043c\u0438\u0440!</ b>\x00\x00\u0299\Ub7024000\U08c55800\Ub7025904\x00\Ub777351c\U08c79e58\x00\U08c7a0b4\X00\Ub7025904\Ub7025954\Ub702594c\Ub702591c\Ub702592c\Ub7025934\X00\X00\X00

我怎么能在这里得到正常的字符串?

c python unicode python-c-api

4
推荐指数
1
解决办法
1010
查看次数

标签 统计

c ×1

python ×1

python-c-api ×1

unicode ×1