国外做图标网站qq电脑版网页登录入口
国外做图标网站,qq电脑版网页登录入口,wordpress 微博链接地址,汕头电商网站建设解决Java调用Python代码返回中文乱码问题
一、乱码原因分析
在Java调用Python代码执行时遇到乱码#xff0c;我们的第一反应可能是检查文件编码设置是否一致。但在本例中#xff0c;无论是Java还是Python#xff0c;编码格式均已设为“UTF-8”#xff0c;因此排除了编码不…解决Java调用Python代码返回中文乱码问题
一、乱码原因分析
在Java调用Python代码执行时遇到乱码我们的第一反应可能是检查文件编码设置是否一致。但在本例中无论是Java还是Python编码格式均已设为“UTF-8”因此排除了编码不一致的问题。乱码的真正原因在于Python的print函数输出时所用的默认编码格式。
执行以下Python代码我们可以查看print函数的默认编码
import locale
print(locale.getdefaultlocale())执行结果显示默认编码为(zh_CN, cp936)其中“cp936”代表GB2312即中文编码。
二、正确解决方案
经测试有两种方法可有效解决中文乱码问题一种是在Java代码中设置编码另一种是在Python代码中设置。
2.1 方法1——在Java代码中设置编码格式
使用Process和Runtime调用Python代码时可以将获取到的输入流编码设置为gb2312。
try {String result ;String exe python解释器所处的绝对路径;String py python代码文件绝对地址;Process process Runtime.getRuntime().exec(exe py);InputStreamReader isr new InputStreamReader(process.getInputStream(),gb2312);LineNumberReader input new LineNumberReader(isr);result input.readLine();input.close();isr.close();int re process.waitFor();System.out.println(result);
} catch (InterruptedException | IOException e) {System.out.println(调用python脚本并读取结果时出错 e.getMessage());
}注意不能读取完字节流后再用getByte重新编码这会导致另一种乱码。
2.2 方法2——在Python代码中设置编码格式
当不确定Java中将以何种方式调用Python代码时如不使用Process可以直接在Python代码中设置编码格式
import sys
import io
sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8)经过上述设置后乱码问题将得到有效解决。如果您有更好的解决方式欢迎在评论区留言交流。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/86476.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!