PythonC API unicode参数

2024-05-28 18:47:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的python脚本

import _tph
str = u'Привет, <b>мир!</b>' # Some unicode string with a russian characters
_tph.strip_tags(str)

和C库,它被编译成_tph.so.公司. 这是一个strip_tags函数:

^{pr2}$

printf函数打印这个:1080,19。所以,str长度实际上是19个符号,但是我到底从什么地方得到了1080个字符呢?在

当我打印string时,我得到了str,空字符,然后是很多垃圾字节。在

垃圾内存如下所示:

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

我怎么能得到一根普通的绳子?在


Tags: 函数import脚本stringtagsunicodesome垃圾
1条回答
网友
1楼 · 发布于 2024-05-28 18:47:00

这里的“string”参数名称不正确。它是一个指向Python Unicode对象的指针,因此printf将看到大量二进制数据(对象类型、GC头、ref计数和编码的Unicode代码点),直到它碰巧找到一个零字节,printf将其解释为字符串的结尾。在

查看字符串的最简单方法是使用PyObject_Print(string)。您可以在:http://docs.python.org/c-api/unicode.html#unicode-objects找到用于操作Python unicode对象的C函数

相关问题 更多 >

    热门问题