【发布时间】:2011-12-18 19:23:03
【问题描述】:
我有一个简单的 python 脚本
import _tph
str = u'Привет, <b>мир!</b>' # Some unicode string with a russian characters
_tph.strip_tags(str)
和 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);
// ...
}
printf 函数打印:1080, 19。所以,str 的长度实际上是 19 个符号,但是我从什么地狱得到这 1080 个字符?
当我打印string 时,我得到了我的str、空字符,然后是大量垃圾字节。
垃圾内存如下所示:
u'\u041f\u0440\u0438\u0432\u0435\u0442, \u043c\u0438\u0440!\x00\x00\u0299\Ub7024000\U08c55800\Ub7025904\x00\Ub777358e\Ub777358e \x00\U08c7a0b4\x00\Ub7025904\Ub7025954\Ub702594c\Ub702591c\Ub702592c\Ub7025934\x00\x00\x00
我怎样才能在这里得到一个正常的字符串?
【问题讨论】:
标签: python c unicode python-c-api