今天代码狗博客因更换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)