让代码更简单

网站中以中文和数字或字母命名的文件无法访问

重要:本文最后更新于2018-11-13 20:02:52,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

今天代码狗博客因更换web服务器出现了一个很奇怪的问题,博客有些图片打不开了。第一反应检测是否是因为中文编码问题,检测结果不出所料,果然是编码问题。修改centos的系统默认编码为utf-8后,测试全中文图片地址访问,一切正常。

重点来了…….

中文带数字或者字母的文件依旧不能访问,在终端查看文件依旧显示乱码,全中文的文件显示一切正常,浏览器访问也正常,这就奇了怪了。

然后就怀疑FTP工具上传时编码被转换了,设置了下FTP工具,没有卵用,仍然这样。百度了好久,都说改系统默认编码,看看系统是否支持中文,……找了好久终于找到一篇文章解决了问题。

原因在于,Windows 的文件名中文编码默认为GBK,压缩或者上传后,文件名还会是GBK编码,而Linux中默认文件名编码为UTF8,由于编码不一致所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码。

让我觉得奇怪的是全中文就不需要转码?这个问题一直没弄懂,不过问题算是解决了。

安装convmv工具

复制
yum install convmv

执行批量转码命令

复制
convmv -f gbk -t utf-8 -r --notest /home/wwwroot

这句话的意思是将gbk转码到utf-8 不是测试,转码文件夹为/home/wwwroot文件夹下所有文件。

转码效果:

网站中以中文和数字或字母命名的文件无法访问

网站中以中文和数字或字母命名的文件无法访问

常用参数说明

-r 递归处理子文件夹

–notest 真正进行操作,默认情况下是不对文件进行真实操作

–list 显示所有支持的编码

–unescap 可以做一下转义,比如把%20变成空格

-i 交互模式(询问每一个转换,防止误操作)

linux下有许多方便的小工具来转换编码:

文本内容转换 iconv

文件名转换 convmv

mp3标签转换 python-mutagen

在此提醒大家,在编辑网站时尽量不要使用中文,否则。。。。够忙的!

感觉很棒!可以赞赏支持我哟~

0 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐