首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python c-api和unicode字符串

Python c-api和unicode字符串
EN

Stack Overflow用户
提问于 2009-02-20 18:47:35
回答 1查看 3K关注 0票数 4

我需要在python对象和各种编码的c字符串之间进行转换。使用PyUnicode_Decode将c字符串转换为unicode对象相当简单,但是我不确定如何从另一种方式转换。

代码语言:javascript
复制
//char* can be a wchar_t or any other element size, just make sure it is correctly terminated for its encoding
Unicode(const char *str, size_t bytes, const char *encoding="utf-16", const char *errors="strict")
    :Object(PyUnicode_Decode(str, bytes, encoding, errors))
{
    //check for any python exceptions
    ExceptionCheck();
}

我想创建另一个函数,它接受python Unicode字符串,并使用给定的编码将其放入缓冲区,例如:

代码语言:javascript
复制
//fills buffer with a null terminated string in encoding
void AsCString(char *buffer, size_t bufferBytes,
    const char *encoding="utf-16", const char *errors="strict")
{
    ...
}

我怀疑它与返回PyObject的PyUnicode_AsEncodedString有关,所以我不确定如何将其放入我的缓冲区中……

注意:上面两个方法都是包装我正在使用的Python3.0的python api的c++ Unicode类的成员

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-02-20 19:26:51

我怀疑它与PyUnicode_AsEncodedString有关,但是它返回了一个PyObject,所以我不确定如何将它放入我的缓冲区中……

返回的PyObject是一个PyStringObject,因此您只需要使用PyString_SizePyString_AsString来获取指向字符串缓冲区的指针,并将其复制到您自己的缓冲区。

如果您正在寻找一种直接从PyUnicode对象转到您自己的字符缓冲区的方法,我不认为您可以做到这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/570781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档