java代码:
PythonInterpreter interpreter = new PythonInterpreter();
PySystemState sys = Py.getSystemState();
sys.path.add("C:\\Python27\\jython2.5.2\\Lib");
interpreter.execfile("F:\\Eclipse_WorkSpace\\eval\\src\\eval\\shell.py");
interpreter.exec("print contain('name:梁淘气',':淘气梁')");
python脚本:
def contain(str,subStr):
print str
print subStr
if subStr in str:
return True
else:
return False
输出:
name:???
:???
True
问题:中文变成了???,导致结果出错,该怎么解决,希望大牛赐教
这种情况,一般都是编码的问题吧?
应该是编码的问题,但是怎么改啊
@Gotogoo: 不是做Java的,不知道怎么改,Java默认的文件应该都是utf8?你那个py文件编码问题?
@顾晓北: 我把java和py文件的编码都设置成了utf-8,py文件中中文也可以识别,就是java给python函数传参的时候不知道哪儿出问题了
这里出现了一个误区,虽然我把java文件的编码格式设置成了utf-8,但是字符的编码任然用的是GBK,所以仍然需要将字符 串encode成utf-8,就是这样 interpreter.exec("print "+new PyString("contain('name:梁淘气',':梁法成')").encode("utf-8"));
utf-8