Linux环境下解决通过Tomcat访问中文资源文件乱码问题

1.场景

最近遇到一个需求,需要访问带中文的资源文件(使用中文命名的)。
http://ip:8080/pdf/tdzs/国标200-221号.pdf,前端直接在游览器访问这个地址时候出现404错误。在linux系统中,如果将项目部署在tomcat下,项目中包含中文名称文件资源。可能会报404找不到文件的错误。linux的编码格式是UTF-8,如果是直接将文件通过Xftp工具拖到服务器指定目录里面,此时文件是GBK格式(windows是GBK),就会出现文件名称乱码问题
在这里插入图片描述

2.解决

在Linux中专门提供了一种工具convmv进行文件名编码的转换,可以将文件名从GBK转换成UTF-8编码,或者从UTF-8转换到GBK。

2.1.安装

http://www.j3e.de/linux/convmv/convmv-1.14.tar.gz
下载好了然后放进linux中解压命名 tar zxvf convmv-1.14.tar.gz

2.2 进入此目录 cd convmv-1.14/

执行 make install 命令 则安装成功。

2.3.convmv具体用法

convmv 编码转换命令

用法:convmv -f 源编码 -t 新编码 [选项] 文件名

-f enc     源编码
-t enc     新编码
-r         递归处理子文件夹
-i         交互文向转换
--list     显示所有可用编码
--nosmart  如果是utf8文件,忽略
--notest   直接转换不测试
--replace  文件相同直接替换
--unescape 可以做一下转义,比如把%20变成空格
--upper    全部转换成大写
--lower    全部转换成小定

3.使用

切换到需要转码的文件目录
执行命名:
convmv -f gbk -t utf-8 -r --notest pdf/

3.1 修改Tomcat 的server.xml里面设置的字符编码

URIEncoding="UTF-8

<Connector executor="tomcatThreadPool"
           port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" URIEncoding="UTF-8"/>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页