我有一个简单的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
我怎么能在这里得到正常的字符串?