情景描述:
centos +jdk8+tomcat 环境,使用org.apache.tools.zip压缩打包服务上的文件,然后使用浏览器下载后,解压压缩文件发现,里面的文件名称中只要包含中文,中文部分全部显示为“问号”。
解决过程
1、查看系统编码。
使用locale命令发现系统编码正常
同时使用命令在服务器上创建中文名称的文件夹和文件,都能正常显示。所以暂时排除了系统编码这个原因。
2、查看jvm 虚拟机的参数
使用jinfo 命令查看 JVM 参数发现 sun.jnu.encoding参数的值是ANSI_X3.4-1968
猜测就是这个原因就是导致中文乱码。
在tomcat/bin/daemon.sh文件中加入下面一行代码。
CATALINA_OPTS=-Dfile.encoding=“UTF-8”
重启后,中文正常,问题解决。
参考:
1、中文乱码原因:
https://blog.csdn.net/jie873440996/article/details/115792410
2、tomcat中更改编码:
https://blog.csdn.net/u010448530/article/details/102842320
3、jinfo查看和调整JVM参数
http://fetosoft.cn/archives/2020/02/16/163