同样的代码,开发环境运⾏正常,部署到⽣产环境⼀般情况下(⽆论中⽂还是英⽂字母)页⾯也正常。当是在调⽤⼩程序的服务端接⼝发送模板消息到同开放平台下的中时,⽣产环境调⽤接⼝发送消息出现中⽂乱,开发环境调试时⼜正常的。
1.开发环境
操作系统:win 10
开发⼯具:eclipse
项⽬⽂件编码(即*.java⽂件):utf-8
启动⽅式有两种⽅式:
① eclipse中运⾏JettyServer类的main⽅法启动嵌⼊式jetty
② 通过ant编译项⽬,然后打包成jar,最后通过java 命令运⾏JettyServer类的main⽅法启动嵌⼊式jetty。
<javac includeantruntime="false" source="1.8" target="1.8" srcdir="${basedir}/src" destdir="${basedir}/build/classes" encoding="UTF-8">
System.out.Properties().get("ding"));
结果:
① 通过eclipse运⾏调试时调⽤接⼝传的中⽂参数是正常的,ding=UTF-8
② 通过java -jar 命令运⾏项⽬时,访问本地页⾯正常,但调⽤接⼝发送消息,中⽂乱码,ding=GBK。
2.⽣产环境
操作系统:win 2008 r2
启动⽅式:通过java -jar 命令运⾏项⽬
结果:和开发环境⼀样,访问本地页⾯正常,但调⽤接⼝发送消息,中⽂乱码,ding=GBK。
eclipse怎么打开已有的java文件到原因:
之前并不知道是由于ding引起的,了很多资料才发现是由于eclipse启动项⽬时ding值⾃动与main⽅法所在java⽂件的编码格式⼀致。java -jar命令启动时,windows系统⼀般ding为GBK,unix系统⼀般ding为UTF-8.
解决办法:
在启动项⽬的start.bat⽂件中,添加参数-ding=UTF-8。这样就解决了调⽤接⼝传参中⽂乱码问题了。
chcp 65001
java -jar -ding=UTF-8 xpl.jar
@
关于chcp命令:
windows操作系统的cmd控制台默认编码⽅式为GBK。
使⽤chcp 65001命令,可以将编码⽅式改为UTF-8. 这个只在当前控制台窗⼝有效,关闭窗⼝后,会⾃动恢复为GBK。
之前ding=GBK,⽣产环境控制台输出的⽇志信息中⽂是正常的,-ding=UTF-8后,中⽂乱码了。所以要添加chcp 65001。
奇怪的是,我在开发环境下添加chcp 65001后启动项⽬,控制台输出⽇志中⽂正常,⽣产环境下控制台显⽰中⽂乱码。不知道是不是win 2008 r2的原因。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论