Java日志文件乱码

前言

计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码";反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密。在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码。

出现乱码问题,一般是由于编码字符集与解码字符集不一致导致。

问题

新应用发布到新的服务器中,出现日志文件中文乱码的问题。见下图中的nickName:

日志中文乱码

过程

  1. 查看文件的解码字符集。将日志download到自己电脑上使用notepad或者其他文本编辑器查看文件编码,发现文件的编码格式为utf-8,即解码字符集为utf-8。

2.查看文件的编码字符集。 通过下面的Java代码获取java虚拟机使用的字符集

 String charsetName = Charset.defaultCharset().name();

发现Java虚拟机使用的字符集为US-ASCII。非utf-8。编码字符集与解码字符集不一致导致。

解决方法

在Java应用程序启动时添加启动参数-Dfile.encoding=utf-8即可,如是tomcat,在tomcat的配置文件tomcat.conf中的变量JAVA_OPTS添加-Dfile.encoding=utf-8即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换...
    x360阅读 7,208评论 1 20
  • 可以看我的博客 lmwen.top 或者订阅我的公众号 简介有稍微接触python的人就会知道,python中...
    ayuLiao阅读 8,455评论 1 5
  • 为什么要编码 不知道大家有没有想过一个问题,那就是为什么要编码?我们能不能不编码?要回答这个问题必须要回到计算机是...
    艾小天儿阅读 17,730评论 0 2
  • 姓名:易平香 企业名称:东莞耀升机电有限公司 组别:AT感谢组 【日精进打卡第38天】 【知~学习】 诵读《大纲》...
    shine1yi阅读 1,170评论 0 0
  • 从小一直被人夸赞为“乖孩子”,学习成绩很好各种奖状贴满了整个墙,小学到研究生没有耽误一年,毕业后顺利入职所谓的国企...
    小君歌的日常阅读 4,344评论 1 0