+ -
当前位置:首页 → 问答吧 → 【求助】使用C++调用Python函数,传递中文字符串失败。

【求助】使用C++调用Python函数,传递中文字符串失败。

时间:2011-07-04

来源:互联网

Python Version : 3.1.2

...
std::string string1 = "u\"你好\"";
pArgs = Py_BuildValue("(s)",string1.c_str());
pFunc = PyObject_GetAttrString(pModule, "Test1");
...

pArgs = Py_BuildValue() 返回是空,但是如果传递string1 = "111","ddd"之类的字符肯定是没有问题。

总结如下:"你好" 失败 "u\"你好\""失败 "ddd" 成功

求各位大神,帮忙看一下是哪里出的问题~~~~~

作者: diskingchuan   发布时间: 2011-07-04

把字符串转成 UTF格式试试……

作者: huaxinwu   发布时间: 2011-07-04

CString Utf2Str(Tcl_Interp *interp, const char *utf)
{
if (utf == NULL) 
{
return "";
}
CString str;

Tcl_Encoding encoding = Tcl_GetEncoding(interp, NULL);

Tcl_DString ds;
char *pData = Tcl_UtfToExternalDString(encoding, utf, strlen(utf), &ds);

str = pData;

Tcl_DStringFree(&ds);
Tcl_FreeEncoding(encoding);

return str;
}

CString Str2Utf(Tcl_Interp *interp, const char *str)
{
CString utf;

Tcl_Encoding encoding = Tcl_GetEncoding(interp, NULL);

Tcl_DString ds;
char *pData = Tcl_ExternalToUtfDString(encoding, str, strlen(str), &ds);

utf = pData;

Tcl_DStringFree(&ds);
Tcl_FreeEncoding(encoding);

return utf;
}

作者: huaxinwu   发布时间: 2011-07-04

是个TCL的例子

作者: huaxinwu   发布时间: 2011-07-04

源文件编码是什么?

作者: iambic   发布时间: 2011-07-04