最近,在项目中需要用到Java代用Python的代码,并且需要传参数,因此选用了Jython包,但是,如果在调用python脚本时,出现了中文乱码的现象。代码如下:

PythonInterpreter interpreter = interpreter = new PythonInterpreter();

String code = "# -*- coding: utf-8 -*-\n" +        "import sys\n" +        "reload(sys)\n" +        "sys.setdefaultencoding('utf-8')\n" +        "import json\n" +        "def parse(strtest):\n" +        "    jsonObj = json.loads(strtest)\n" +        "    jsonObj[\"省份\"] = \"安徽省\"\n" +        "    return json.dumps(jsonObj)";

interpreter.exec(code);PyFunction func = (PyFunction)interpreter.get("parse",PyFunction.class);

String str = "{\"CityId\":18,\"CityName\":\"合肥\",\"ProvinceId\":27,\"CityOrder\":1}";PyString str2 = Py.newStringOrUnicode(str);PyObject pyObject = func.__call__(str2);JSONObject json = new JSONObject(pyObject.toString());System.out.println(json.toString());

运行结果如下:

结果很奇怪,传进去的参数中有中文不乱码,但是写在脚本中的中文乱码了,开始以为是Python脚本中编码的设置问题,上网搜了很久,答案都是在脚本中加入

# -*- coding: utf-8 -*- 或者sys.setdefaultencoding('utf-8')之类的,但是都没有效果。后来想了想,是不是代码中的code脚本传进Jython包中不是utf-8编码的问题,因此试了试把code

脚本写在文件中,并制定文件为utf-8编码,使用:interpreter.execfile(“E:\\test.py”)调用脚本执行,结果中文不乱码了。

虽然上述方法解决了问题,但是如果每次动态执行脚本时,都需要先把脚本存到.py文件中,然后在调用,这样会很麻烦。

因此,研究了下Jython包,发现在讲Java的字符串传进Jython包中时,可以先转化为PyString,并指定编码,因此,修改上述程序。

运行结果如下:

 

转载于:https://www.cnblogs.com/junjiang3/p/7112789.html

Jython中文乱码问题相关推荐

  1. Jmeter中Python中文乱码

    副标题:Jmeter中Jython中文乱码 被这个问题折腾了差不多两个小时,终于解决了,但是具体为什么会这样,还是不太明白.在pycharm里面(py3.7)一切都是正常的,换到Jmeter的Jyth ...

  2. SpringSecurity安全验证中文乱码问题

    使用SpringSecurity做安全验证时发现form表单中提交中文名会出现乱码问题. 原因是因为我在web.xml配置文件中将springSecurityFilterChain拦截器放在了 cha ...

  3. httpclient工具类,post请求发送json字符串参数,中文乱码处理

    在使用httpclient发送post请求的时候,接收端中文乱码问题解决. 正文: 我们都知道,一般情况下使用post请求是不会出现中文乱码的.可是在使用httpclient发送post请求报文含中文 ...

  4. 关于HttpClient上传中文乱码的解决办法

    使用过HttpClient的人都知道可以通过addTextBody方法来添加要上传的文本信息,但是,如果要上传中文的话,或还有中文名称的文件会出现乱码的问题,解决办法其实很简单: 第一步:设置Mult ...

  5. Servlet、MySQL中文乱码

    1.Servlet中文乱码: 在doPost或doGet方法里,加上以下两行即可: response.setContentType("text/html;charset=UTF-8" ...

  6. android java 中文乱码_android读写中文如何避免乱码详解

    前言 android读取文件中文出现乱码的原因无非就是,读取文件的字符格式与写如文件的格式不一致.因此,避免中文乱码,要在写入文件的时候按照一定的格式写入,读取的时候按照一定的格式读取.这样对应就不会 ...

  7. java servlet 参数乱码_JSPServlet处理参数中的中文乱码总结

    从form表单提交信息到一个JSP页面或者一个Servlet进行处理的时候,提交的中文信息若不加处理的话就会显示乱码,如一串???.现在通过一个例子来进行总结如下: 写一个用户信息提交页面,通过这个页 ...

  8. php pdo 中文乱码,php pdo oracle中文乱码的快速解决方法

    在/etc/profile.d/简历oracle.sh 内容如下在NLS_LANG设置编码ORACLE_HOME=/usr/lib/oracle/12.1/client64 C_INCLUDE_PAT ...

  9. sqlserver mysql 乱码_SQLServer数据库如何解决中文乱码问题?方法有哪些?

    很多使用数据库的人都知道,在安装SQLServer数据库是,如果设置不当就会出现一些中文乱码.主要原因是,很多人在使用默认安装系统时,一般不会考虑到默认排序的规则是拉丁文的排序规则,只是点击下一步,在 ...

最新文章

  1. 面试官:你能说说MyBatis拦截器原理吗?
  2. 查询出每个部门比本部门平均工资高的职工人数
  3. 手机html图片模糊,css3处理sprite背景图压缩来解决H5网页在手机浏览器下图标模糊的问题_html/css_WEB-ITnose...
  4. 准备 overlay 网络实验环境 - 每天5分钟玩转 Docker 容器技术(49)
  5. 推荐系统里,可以用蒸馏吗?
  6. 图表中各个参数的应用( AChartEngine XMultipleSeriesRenderer
  7. 【变色龙】app封装系统源码+完美版在售封装系统
  8. python3列表推导式矩阵转置_python3进阶之推导式1之列表(list)推导式(comprehensions)...
  9. java大数据组件HBase
  10. CSS进阶(4)—— 温和padding中的诡异CSS现象
  11. ztree异步加载数据amp;amp;amp;amp;amp;amp;amp;amp;给父节点动态追加子节点
  12. ASP.NET中 CompareValidator(比较验证)的使用
  13. 交换机SERDES介绍
  14. kb2999226此更新不适用你的计算机,Windows Server 2012 R2 安装补丁KB2999226提示此更新不适合用于计算机...
  15. kali桌面图标和右键菜单系统更新之后不见了的解决方法
  16. 2018浙大计算机考研经验
  17. echarts 中国地图加自定义图标
  18. Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁
  19. EI收录中国期刊目录 各个版本的含义及收录例子-12年初版
  20. 真有那么大差距?— iPhone XR 屏幕素质报告

热门文章

  1. 论文阅读(4)--Part-Stacked CNN for Fine-Grained Visual Categorization
  2. python中_python中的一些用法总结
  3. python实现离线翻译_10分钟教你用Python实现微信翻译机器人
  4. 【codeforces 534D】Handshakes
  5. python实战之编码问题:中文!永远的痛
  6. [原创] 毕设---在myeclipes中安装Hadoop开发插件
  7. 小程序自带git方法提交时文件冲突的解决
  8. idea创建springboot项目出现的问题
  9. QC安装与运行中的问题汇集
  10. 警惕Oracle DB操作高压线