最近有这样一个需求:在Java Web工程中读取本地某一个文件夹(固定路径,写在配置文件中)下的所有文件,然后将其导入到系统中。最直接的方案就是使用java.io.File的listFiles方法列出这个文件夹中的所有文件,然后在做处理,我们也是这样做的。
在本地测试没有任何问题,但是一旦部署到生产环境(Linux系统环境),问题就来了:由于文件是通过FTP上传到固定文件夹中的,所以有一些中文名称的文件,在上传到Linux系统中后,就出现了乱码,程序也无法读取到。
于是开始检查tomcat编码、操作系统编码格式,都统一设置为UTF-8。
tomcat
catalina.sh中添加:export.UTF-8
linux
vi /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
注:检查操作系统编码命令为echo $LANG。查看操作系统语言领命:locale
统一编码后,问题依然存在。这时候才意识到,由于文件是在windows下生成的,默认编码都是gbk,所以需要将文件名称转码。
将文件名称转码,需要用到convmv,Linux中安装命令如下:
yum install convmv
如果系统没有联网,或者屏蔽了yum命令,可以先下载程序包,然后安装。
安装步骤
1)下载
https://pkgs.org/download/convmv
根据操作系统版本选择相应的版本下载: