前段时间遇到一个很奇怪的问题,同一个项目war包,在不同的服务器环境中,只有一个环境出现乱码问题,焦头烂额好几天。现在将问题及踩过的坑记录下,希望能帮助到其他人。
首先各环境服务部署的代码是相同的,不在同一个服务器上,
如 本地dev :localhost:8080
测试test:192.168.1.100:8080
uat:x.x.x.200:8080
正式:b.b.b.100:8080
项目数据从mq中取出 ,解析后存储。
数据写入mq代码如下:
mq中取数据代码如下:
测试环境代码运行至log.info("获取到的消息:"+value);处,打印日志中文乱码,其他环境均OK.
检查服务器编码格式 都修改为utf-8,重启后问题依旧。
然后怀疑mq环境有问题,重新装了mq后问题还是,故又排除mq问题。
最后增加如下代码
/** * 设置压缩编码,解决中文文件名乱码问题 */ private static final String encoding = System.getProperty("sun.jnu.encoding"); static { /** * 解压依据的编码是sun.zip.encoding 所以需要设置 解压编码 */ System.setProperty("sun.zip.encoding", encoding); }后运行,乱码问题解决。