场景
最近遇到一个需求,需要访问带中文的资源文件(使用中文命名的)。
国标200-221号.pdf,前端直接在游览器访问这个地址时候出现404错误。在linux系统中,如果将项目部署在tomcat下,项目中包含中文名称文件资源。可能会报404找不到文件的错误。linux的编码格式是UTF-8,如果是直接将文件通过Xftp工具拖到服务器指定目录里面,此时文件是GBK格式(windows是GBK),就会出现文件名称乱码问题
解决
在Linux中专门提供了一种工具convmv进行文件名编码的转换,可以将文件名从GBK转换成UTF-8编码,或者从UTF-8转换到GBK。
1.安装
http://www.j3e.de/linux/convmv/convmv-1.14.tar.gz
下载好了然后放进linux中解压命名 tar zxvf convmv-1.14.tar.gz
2 进入此目录 cd convmv-1.14/
执行 make install 命令 则安装成功。
3.convmv具体用法
convmv 编码转换命令
用法:convmv -f 源编码 -t 新编码 [选项] 文件名
-f enc 源编码
-t enc 新编码
-r 递归处理子文件夹
-i 交互文向转换
--list 显示所有可用编码
--nosmart 如果是utf8文件,忽略
--notest 直接转换不测试
--replace 文件相同直接替换
--unescape 可以做一下转义,比如把%20变成空格
--upper 全部转换成大写
--lower 全部转换成小定
使用
切换到需要转码的文件目录
执行命名:
convmv -f gbk -t utf-8 -r --notest pdf/
修改Tomcat 的server.xml里面设置的字符编码
URIEncoding="UTF-8
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
原文链接:https://blog.csdn.net/weixin_42694286/article/details/108623402