首页 新闻 搜索 专区 学院

java调用python脚本,中文变成问号

0
悬赏园豆:50 [已关闭问题] 关闭于 2016-08-18 10:26

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

 

问题:中文变成了???,导致结果出错,该怎么解决,希望大牛赐教

问题补充:

就是java给python函数传参的时候编码出问题了

Gotogoo的主页 Gotogoo | 初学一级 | 园豆:147
提问于:2016-08-17 17:03
< >
分享
所有回答(3)
0

 这种情况,一般都是编码的问题吧?

顾晓北 | 园豆:10219 (专家六级) | 2016-08-17 17:08

应该是编码的问题,但是怎么改啊

支持(0) 反对(0) Gotogoo | 园豆:147 (初学一级) | 2016-08-17 17:09

@Gotogoo: 不是做Java的,不知道怎么改,Java默认的文件应该都是utf8?你那个py文件编码问题?

支持(0) 反对(0) 顾晓北 | 园豆:10219 (专家六级) | 2016-08-17 17:13

@顾晓北: 我把java和py文件的编码都设置成了utf-8,py文件中中文也可以识别,就是java给python函数传参的时候不知道哪儿出问题了

支持(0) 反对(0) Gotogoo | 园豆:147 (初学一级) | 2016-08-17 17:16
0

这里出现了一个误区,虽然我把java文件的编码格式设置成了utf-8,但是字符的编码任然用的是GBK,所以仍然需要将字符 串encode成utf-8,就是这样 interpreter.exec("print "+new PyString("contain('name:梁淘气',':梁法成')").encode("utf-8"));

 

Gotogoo | 园豆:147 (初学一级) | 2016-08-18 10:23
0

utf-8

jgig11 | 园豆:338 (菜鸟二级) | 2016-09-05 14:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册