今天测试一个web服务器的时候,发现中文文件名无法打开,直接404,一开始以为是程序编码问题,所以直接在根目录建一个中文文件名,也是直接打不开,所以可以排除是程序编码。

所以肯定是web服务器的编码问题,后来发现是文件名编码问题。

nginx中文url404

因为服务器上文件储存的编码为GBK格式,而访问的url为utf8格式,所以404,这种情况可以手动将中文转成gb2312的编码,放在url里打开,你会发现可以打开。

所以临时的解决方法就是将文件名编码改成utf-8格式。

文件名编码转化工具convmv

可以使用yum install 安装,内网的话可以下载下面的压缩包

convmv-1.14.tar2016.8.1 - 26.00 Kb

命令:

convmv -f GBK -t UTF-8 -notest *.docx

不过这种方法只是一个临时解决方案,如果产生了新的文件还是utf8编码怎么办呢,这时候就要从根本上解决问题。

详细请参考:URL中文编码与服务器上文件储存编码不一致导致404解决方案