# -*- coding: utf-8 -*
def Hello(s):
print s
然后我在VC 2005新建一个Console项目,调用这个test2.py里的hello函数,给Hello函数传递一个英文字符串比如"Hello Python",很正常地显示出来了。
然而传递一个"u\"你好Python\""字符串,却显示的是:
u"你好Python"
[7682 refs]
请按任意键继续. . .
请问这样的显示结果是否正确?如何去掉前面的"u"?
还有每次运行都会出现[7682 refs]是什么意思?怎么去掉它?
最后,当在VC调用某个函数以后,如何得到一个中文字符串的返回值?
VC 2005代码如下:
int test2()
{
Py_Initialize();
PyObject * pModule = NULL;
PyObject * pFunc = NULL;
PyObject * pArg = NULL;
pModule = PyImport_ImportModule("test2");
pFunc = PyObject_GetAttrString(pModule, "Hello");
pArg = Py_BuildValue("(s)", "u\"你好Python\"");
PyEval_CallObject(pFunc, pArg);
Py_Finalize();
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "chs");
test2();
system("pause");
return 0;
}
3 个解决方案
#1
前两个问题都可以用print来去掉
vc要得到中文返回值,如果是utf8的,得做一下转换。
vc要得到中文返回值,如果是utf8的,得做一下转换。
#2
求教,为什么
pModule = PyImport_ImportModule("test2");
pFunc = PyObject_GetAttrString(pModule, "Hello");
pArg = Py_BuildValue("(s)", "u\"你好Python\"");
我的 Py_BuildValue() 返回时空值,也就是说参数创建是失败的?
其他地方和LZ是一样的。(Python版本3.1.2)
#3
另,我想传递一个中文参数到Python中,该如何做?
#1
前两个问题都可以用print来去掉
vc要得到中文返回值,如果是utf8的,得做一下转换。
vc要得到中文返回值,如果是utf8的,得做一下转换。
#2
求教,为什么
pModule = PyImport_ImportModule("test2");
pFunc = PyObject_GetAttrString(pModule, "Hello");
pArg = Py_BuildValue("(s)", "u\"你好Python\"");
我的 Py_BuildValue() 返回时空值,也就是说参数创建是失败的?
其他地方和LZ是一样的。(Python版本3.1.2)
#3
另,我想传递一个中文参数到Python中,该如何做?