UTF-8 这种编码已经是大势所趋,但是还有不少中文的文档保留着老式的 GB2312编码,而且只要你要和 Windows 打交道,就免不了要处理 GB2312 的问题,比如处理从 Windows 下拷过来的程序源代码、文本文件、字母文件之类。
编码转换的方法估计大多数同学都知道了,不过还是有必要再强调一下,我就是老忘。
Linux 下的 iconv 命令可以来处理字符编码的转换,基本命令格式如下:
1 | iconv -f 原始编码 -t 目标编码 文件名 > 新文件名 |
-f 代表 from,-t 代表 to。
假设我要把 text.txt 从 GB2312 编码转换成 UTF-8,并且保存为 text-utf-8.txt 的话,那么命令如下:
1 | iconv -f GB2312 -t utf-8 text.txt > text-utf-8.txt |
不过有的时候,转换会报错,很可能的原因是原文件中有些字符超过了 GB2312 的范围,那么,这个时候,我们可以把 GB2312 改成它的超集 GB18030,一般就解决问题了:
1 | iconv -f gb18030 -t utf-8 text.txt > text-utf-8.txt |