Jython中文乱码问题

最近,在项目中需要用到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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无规则弹窗自动点击插件_vscode 插件会了吧,英语不好的赶紧下载 自动分析源码中的陌生单词、点击朗读单词...

名字非常土:会了吧!Solgan 还在因为 变量中 包含不认识的单词 头大吗?还在因为 看不懂 英文注释/文档 掉头发吗 ?还在因为 各种机器翻译的内容 云里雾里吗 ?您的救星来了!!!用了“会…

Knozen:新型职场社交评论匿名应用,已获多家风投投资

Knozen是一款6月底新公布的职场匿名应用,能够展示你的同事朋友最赞赏、喜欢你什么。通过这款应用。能够匿名评价、分享、发现你的同事和朋友的个性。以及个性特征的比較。你的评价还能够被其它人匿名允许或反对:这个应用希望能够帮助你发现自己的个性长处…

mq幂等mysql_膜拜!看完这篇你还不懂RocketMQ算我输

RocketMQ 介绍Apache RocketMQ 是一款 低延迟、高并发、高可用、高可靠的分布式消息中间件。消息队列 RocketMQ 可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。RocketMQ 概念Topic:…

从一个数组中找出最接近目标_LeetCode每日一题 | 转变数组后最接近目标值的数组和...

题目来源:LC1300这道题目是一道比较经典的二分查找题。我们注意到,当value越大时,数组之和越大,当value越小时,数组之和越小。因此,我们可以利用数组之和是value的单调递增函数这个性质来进行二分查找。最大…

C++ 初始化列表初始化列表性能问题的简单的探索

C 初始化列表性能问题的简单的探索 从概念上来讲&#xff0c;构造函数的执行可以分成两个阶段&#xff0c;初始化阶段和计算阶段&#xff0c;初始化阶段先于计算阶段。 在执行构造函数时&#xff0c;如果没有给定初始值&#xff0c;那系统就会自动进行初始化。 #include <st…

mysql 5.5半同步复制_(5.5)mysql高可用系列——MySQL半同步复制(实践)

关键词&#xff0c;mysql半同步复制【0】实验环境操作系统&#xff1a;CentOS linux 7.5数据库版本&#xff1a;5.7.24数据库架构&#xff1a;主从复制&#xff0c;主库用于生产&#xff0c;从库用于数据容灾和主库备机&#xff0c;采用默认传统的异步复制。主库IP&#xff1a;…

Java+Jmeter接口测试

一、创建工程、引包1、创建JAVA工程2、引入Jmeter中lib\ext基础包&#xff1a;ApacheJMeter_java.jar、ApacheJMeter_core.jar3、引入Jmeter日志包&#xff1a;jorphan.jar&#xff0c;logkit-2.0.jar&#xff0c;commons-logging-1.1.1.jar&#xff0c;avalon-framework-4.1.4…

Discuz3.3精仿小米风格整站模板制作——1、新建模板方案

术语说明&#xff1a; 模板——模板是一堆按照规定命名方式的html文件&#xff0c;用于指定整个论坛不同页面的外观。标签——标签和模板共同作用以实现论坛换肤功能&#xff0c;其中标签主要控制页面显示什么数据&#xff0c;显示多少条等。风格——风格是一个xml配置文件&…

普元连接mysql_普元EOS 案例 - 还有一行代码的个人空间 - OSCHINA - 中文开源技术交流社区...

1 创建项目1) 进入EOS Studio开发透视图&#xff1b;单击主菜单项“文件”选择“新建”->“空EOS项目2) 在弹出的“创建空EOS项目”视图中&#xff0c;配置相关参数。“项目名称”&#xff1a;EOSTriping&#xff0c;3) 单击【完成】按钮&#xff0c;系统完成该项目框架…

十年WEB技术发展历程

Ajax03年的时候我上六年级。那时候网吧刚在小县城的角落萌生。传奇&#xff0c;大话西游第一代网游一时风靡。我抱着试一试的心态给了网吧老板两块钱想申请个号玩玩&#xff0c;然后接下来的一个小时我一直在&#xff0c;注&#xff0c;冊&#xff0c;账。号。彼时网吧用的512k…

Python之编写登陆接口

1.输入用户名密码&#xff1b; 2.认证成功后显示欢迎信息&#xff1b; 3.错误三次后&#xff0c;账号被锁定。 账号文件&#xff1a;user.txt 锁定文件&#xff1a;locked.txt 流程图如下&#xff1a; # -*- coding:utf-8 -*- # Author Caoxl import sysaccount_fileE:\user…

好全的Android面试题

转载&#xff1a;http://www.jianshu.com/p/84ee896c3329 需求描述 各种新技术接触渠道比较狭窄, 面试没有底气。 常见面试知识点及回答没有较系统的准备&#xff0c;就业指导提供的资料没时间看&#xff0c;看了记不住。 面试没有经验, 不清楚面试前要做的各种准备、面试过程…

JavaSE--类加载器

参考&#xff1a;http://www.importnew.com/6581.html Java 编译器会为虚拟机转换源指令。虚拟机代码存储在以 .class 为扩展名的类文件中&#xff0c;每个类文件都包含某个类或者接口的定义和代码实现。这些类文件必须由一个程序进行解释&#xff0c;该程序能够将虚拟机的指令…

java netbeans 教程_NetBeans 教程

NetBeans IDE Java 快速入门教程第一章本章通过指导您创建一个简单的 "Hello World" Java 控制台应用程序&#xff0c;简要介绍 NetBeans IDE 工作流。学习完本教程后&#xff0c;您将对如何在 IDE 中创建和运行应用程序有一个基本了解。学习完本教程所需的时间不到 …

几个python小程序

python小程序 1-100求和 1 def Sum(x, y):2 return xy3 print reduce(lambda x,y:xy,range(1,101))4 5 i 16 j 07 while i < 101:8 j i j9 i 1 10 print j View Code输出1-100之间的奇偶数1 i 1 2 a [] 3 while i < 100: 4 if i%2 0: 5 …

Linux下git使用

一、安装 本人使用的是centos 7&#xff0c;首先安装git 1.下载git&#xff1a;wget https://Github.com/Git/Git/archive/v2.3.0.tar.gz 2.下载之后解压&#xff1a;tar xvf v2.3.0.tar.gz 3.进入解押文件目录&#xff1a;cd git-2.3.0 4.依次运行如下命令&#xff1a; ./conf…

java 水表识别_一种水表数字的AI智能识别方法与流程

本发明涉及模式识别与人工智能技术领域&#xff0c;特别涉及一种直观的水表数字的AI智能识别方法。背景技术&#xff1a;深度学习在目标检测的应用发展迅速&#xff0c;在YOLO(You Only Look Once)之后又出现了升级版本YOLOv2&#xff0c;采用的是Darknet-19作为基础网络&#…

mysql.w002_mysql简单例子

登陆数据库&#xff1a;mysql -u用户名 -p密码 -P端口 -h数据库地址‍‍‍‍‍‍修改mysql提示符&#xff1a;(仅本次连接有效)‍‍‍‍‍‍方法一&#xff1a;执行mysql -uroot -proot -prompt \h结果为&#xff1a;localhost方法二&#xff1a;进入mysql后&#xff0c;执行PR…

JQuery中的Deferred-详解和使用

首先&#xff0c;为什么要使用Deferred&#xff1f; 先来看一段AJAX的代码&#xff1a; 1 var data; 2 $.get(api/data, function(resp) { 3 data resp.data; 4 }); 5 doSomethingFancyWithData(data); View Code 这段代码极容易出问题&#xff0c;请…

【Eclipse】eclipse在线安装反编译插件

1.help->install new software 2.Add Name&#xff1a;jd-eclipse_update_site Location&#xff1a;http://jd.benow.ca/jd-eclipse/update 3.等待加载出来 4.持续点击下一步&#xff0c;直到完成。 转载于:https://www.cnblogs.com/flydkPocketMagic/p/7170283.html