如果文章对您有帮助,是我前进最大的动力!您当前位置:首页 > 技术心得 > java开发

Linux下java生成中文文件名乱码问题解决

发布时间:2017-09-20 21:06:18编辑:刘强 阅读(

最近我遇到的一个项目需要将一批excel文件生成在服务器磁盘上,然后打包让用户下载zip文件,项目在Linux环境下部署后,发现生成在服务器上的excel文件名都是乱码,而文件内容却没有乱码。处理过程很是揪心,一个小小的问题尝试修改了各种地方,最终是修改了Tomcat下的catalina.sh文件得以解决。

第一步,我先检查了Linux操作系统的默认编码。

vi   /etc/sysconfig/i18n

显示内容如下,说明没问题:  

LANG="zh_CN.UTF-8"  

第二步,确定开发工具eclipse中工作空间和代码文件编码设置,也均为UTF-8

第三步,我在java代码的输出流中,加入日志,查看文件编码情况,发现不是UTF-8,但通过java代码将字符集转成UTF-8后,生成的文件名依然乱码,代码如下:

最后,在tomcat/bin/Catalina.sh文件中,加入指定字符集的配置,问题得以圆满解决!

配置export LANG=zh_CN.UTF-8,位置在 # OS specific support.  $var _must_ be set to either true or false. 下方即可,如下图:

tomcat乱码处理配置.jpg

PS:乱码的解决要追根溯源,保证每个环节都编码一致,有时候还不能太相信眼睛看到的,比如用连接工具看到没有乱码,但其实程序中已经编码不对了。如果没有特殊需要,Linux服务器中部署的项目,文件路径和文件名最好还是使用英文+数字命名,可以在用户下载文件的时候再将文件名转换成中文。

关键字词:java,java乱码,linux