⽤shell批量编码转换
-------------------------------------⽂件内容转换:iconv--------------------------------------
通常,从其他平台拷贝过来(Linux)的⽂件,⽐如mac或win,打开后都是有编码错误的,尤其是中⽂编码。
张雪迎
这⾥主要是纯⽂本⽂件,pdf或者office⽂件不谈,他们只存在⽂件名的乱码,不存在⽂件内容的乱码(因为他门本来就没有编码)。
造成的原因很简单,因为前两个系统上的⽂本⽂件都是默认gbk编码格式的,gbk是个主要为中⽂字体服务的编码,其中也包含英⽂字母和数字,因此对于中国⽤户来说,gbk编码就能写⼀切的⽂本了。
但是Linux平台世界统⼀utf8,这就⿇烦了,Linux的⽂本编辑器或查看器都默认⽤utf8打开⽂本⽂件,并且午饭判断⽂件的原编码⽅式(这点不懂的留⾔)
iconv命令
iconv命令是个很⽅便的⽂件编码转换命令:
Usage: iconv [] []
主要的⽤法参数:
-f, --from-code=NAME      encoding of original text
-t, --to-code=NAME        encoding for output
所以通常-f是gbk,-t是utf8
输出的话,既可以--output也可以输出重定向‘>’到⽂件千金归来大结局
散步作文
但是,想要批量的修改⽂件编码,结合find命令和他的-exec选项是个不错的选择:
⽐如:find . -type f  -exec iconv {} -f gbk -t utf8 --output ./new/{} \;
就是将⽬录下的所有⽂件转化成utf8复制到新的⽬录下。
--------------------------------------⽂件名转换------------------------------------------
但是,如果想解决⽂件名乱码的问题(注意不是⽂件内容⽽是⽂件名),需要另⼀条命令:convmv
从linux往windows拷贝⽂件或者从windows往Linux拷贝⽂件,有时会出现中⽂⽂件名乱码的情况,出
精忠岳飞刘诗诗现这种问题的原因是因为,windows 的⽂件名中⽂编码默认为GBK,⽽Linux中默认⽂件名编码为UTF8,由于编码不⼀致,所以导致了⽂件名乱码的问题,解决这个问题需要对⽂件名进⾏转码。
在Linux中专门提供了⼀种⼯具convmv进⾏⽂件名编码的转换,可以将⽂件名从GBK转换成UTF-8编码,或者从UTF-8转换到GBK。
1、先看⼀下你的系统上是否安装了convmv,如果没安装的话在终端输⼊下⾯的命令安装:
sudo yum -y install convmv
2、下⾯看⼀下convmv的具体⽤法:
convmv -f 源编码 -t 新编码 [选项] ⽂件名
常⽤参数:
教师节手抄报版面设计图大全
-r 递归处理⼦⽂件夹
--notest 真正进⾏操作,请注意在默认情况下是不对⽂件进⾏真实操作的,⽽只是试验。
--list 显⽰所有⽀持的编码
--unescap 可以做⼀下转义,⽐如把%20变成空格
⽐如我们有⼀个utf8编码的⽂件名,转换成GBK编码,命令如下:
convmv -f UTF-8 -t GBK --notest utf8编码的⽂件名
水果为什么叫水果这样转换以后"utf8编码的⽂件名"会被转换成GBK编码(只是⽂件名编码的转换,⽂件内容不会发⽣变化)