背景
本人正在经营一个linux服务器。从windows环境中上传一个本地资源到服务器的时候发现了中文编码的不同导致的乱码。例如:
经过scp上传以后,结果是:
理想状态下的文件名应该如第三条所示,然而实际上上传出来的是第四条。
windows中文环境下的文件名字编码格式是gbk,而linux中文名字的编码是utf-8。本来没有太大的问题,自己的脚本和服务器也设置成兼容gbk,在网站上也能显示中文名,但是发现了无法在地址栏上打开中文文件的bug:
网站上可以正常显示。
但是实际点开一个文件就出现了问题。
其原因同理:大概地址栏上的中文字符会被编码成utf-8,但实际上文件名仍是按照gbk编码,导致404 Not Found。这可不行!故本人决定解决这件事。
解决
经过不懈的探索,我在某一篇文章中找到了方法——软件convmv。
安装方法:
1.软件包管理器安装:apt-get update apt-get install convmv或yum install convmv;
2.编译安装:突然找不到原帖了,就直接扔个地址过来:https://www.j3e.de/linux/convmv/。