java -jar启动参数设置file.encoding编码,解决中文乱码的问题

 更新时间:2023年07月20日 17:12:21   作者:快乐妮子  
这篇文章主要介绍了java -jar启动参数设置file.encoding编码,解决中文乱码的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

java -jar启动参数设置file.encoding编码,解决中文乱码

最终解决办法

java -Dfile.encoding=utf-8 -jar xxx.jar

起因

公司需要基于Jenkins平台上,进行一个批量构建的项目开发,就是个一次性可以调起多个项目的构建,额,先说点题外话,要永远都记得一点,客户都是懒得~

BUG:

使用jenkins-client 请求http://jenkins服务器的域名/job/你的构建项目名/api/json接口获取数据(该接口可以获取某个项目的大部分信息),但坑人的是,本地运行不会乱码,丢到服务器上就尴尬的一批,看图

猫腻

部署到服务器上,**控制台,日志文件,页面上的中文都没有乱码, 直接用浏览器访问上述的jenkins api 接口 也显示正常 ,唯独就是代码里jenkins api 返回的数据有乱码 ** 真的忧桑啊啊啊啊

猜想

是不是对代码里对reponse 的处理出了问题。额,,果然好像是的,

后台查出来 本地 的 Charset.defaultCharset() 返回的是 UTF-8 , 而服务器的是GBK简体中文 ,想哭啊~ 百度了一波 ,查出这个返回值取决于系统的编码环境。

解决思路

**改服务器的编码环境啦啦啦。 **

尝试解决

(1)设置了JAVA_TOOL_OPTIONS 系统环境变量

启动项目,spring日志里会出现一行 PICK UP JAVA_TOOL_OPTIONS 。。。

则说明生效了。

值得开心的是, 之前那个乱码问题 解决啦 ,解决啦,值得忧桑的是,

  • 框架里的logback 里中文乱码了,心碎 ;
  • jenkins 打包项目 里,涉及到cmd 里的命令 , 参数传递 ,和 日志 输出 ,中文乱码了

看来这方法不靠谱,修改的应该是整个环境的编码,使用还是要慎重!!!

(2)最后查到修改某个项目的编码

注意是某个项目的运行环境,不是系统的环境,可以在启动参数的时候设定:java -Dfile.encoding=utf-8 -jar xxx.jar,获取api数据乱码的问题当然是解决了,可控制台的中文依旧乱码。。。

再解决问题:logback.xml指定编码为GBK 。

大胆猜想下,logback 在没有设置编码的情况下,默认应该是跟着当前jvm的编码走的,所以logback的编码也变成了UTF-8 ,而我系统的cmd窗口输出是接受的是中文(取决于系统的编码)。

如下图所示:

最后把logback输出到控制台的编码改成中文的就解决。

要将logback的编码和控制台的编码一致

就这样,最终的问题都解决了~~

最后还是有个疑问,解决控制台乱码,尝试着修改cmd窗口的的编码改为utf-8 (用chcp 65001 ) 和 该系统保持一致,logback.xml 改成utf-8 编码,并没啥用。苦恼~

经过这次,个人觉得以后的logback.xml里最好明确下编码格式,和当前整个系统的编码一致,而不是简单的一个项目的运行环境编码。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring AOPr如何打通两个切面之间的通信

    Spring AOPr如何打通两个切面之间的通信

    本文主要介绍了Spring AOPr如何打通两个切面之间的通信,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • java 实例化类详解及简单实例

    java 实例化类详解及简单实例

    这篇文章主要介绍了java 实例化类详解及简单实例的相关资料,需要的朋友可以参考下
    2017-03-03
  • Java Map 按照Value排序的实现方法

    Java Map 按照Value排序的实现方法

    Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。这篇文章主要介绍了Java Map 按照Value排序的实现方法,需要的朋友可以参考下
    2016-08-08
  • SpringBoot中@Import注解的使用方式

    SpringBoot中@Import注解的使用方式

    这篇文章主要介绍了SpringBoot中@Import注解的使用方式,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • Java实现解析JSON大文件JsonReader工具详解

    Java实现解析JSON大文件JsonReader工具详解

    这篇文章主要介绍了Java实现解析JSON大文件的工具JsonReader使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-01-01
  • Spring Boot与Spring Security的跨域问题解决方案

    Spring Boot与Spring Security的跨域问题解决方案

    跨域问题是指在Web开发中,浏览器出于安全考虑,限制了不同域名之间的资源访问,本文重点给大家介绍Spring Boot与Spring Security的跨域问题解决方案,感兴趣的朋友一起看看吧
    2023-09-09
  • Shiro与Springboot整合开发的基本步骤过程详解

    Shiro与Springboot整合开发的基本步骤过程详解

    这篇文章主要介绍了Shiro与Springboot整合开发的基本步骤,本文结合实例代码给大家介绍整合过程,感兴趣的朋友跟随小编一起看看吧
    2023-06-06
  • java分布式事务之可靠消息最终一致性解决方案

    java分布式事务之可靠消息最终一致性解决方案

    这篇文章主要为大家介绍了java分布式事务之可靠消息最终一致性解决方案,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • MyBatis映射器mapper快速入门教程

    MyBatis映射器mapper快速入门教程

    使用mapper接口的方式,不用写接口实现类,直接完成数据库操作,简单方便。使用mapper接口,采用的是面向接口编程的思想,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-09-09
  • springboot+nginx+https+linux实现负载均衡加域名访问简单测试

    springboot+nginx+https+linux实现负载均衡加域名访问简单测试

    这篇文章主要介绍了springboot+nginx+https+linux实现负载均衡加域名访问简单测试,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05

最新评论