iconv
iconv - 转换文件的编码方式
在了解这个指令之前,需要对文本编码有一定的认识;
这里我们只列举一些容易混乱的概念:
- 高字节、低字节:
一个16进制数有两个字节组成,例如:A9。
高字节就是指16进制数的前8位(权重高的8位),如上例中的A。
低字节就是指16进制数的后8位(权重低的8位),如上例中的9。
- 大端、小端:
大端big - Endian:数据的高字节保存在内存的低地址中
小端Little - Endian:数据的高字节保存在内存的高地址中
内存地址 | 小端模式存放 | 大端模式存放 |
---|---|---|
0x40000 | 9 | A |
0x40001 | A | 9 |
- 文档编码:
英文字母自由26个,汉字却有上万个,更何况还有特殊字符,其他语言文字。但电脑识别的只有二进制流,如何让每一个符号都对应一个确定的二进制流,这就需要一套合理的编码方式。这些编码方式说到底都是在高低字节,大小端,特定的bit位上,做特定的规定与安排,让电脑识别而已。各个国家、语言使用区,甚至同一个国家的不同领域都有自己的一套编码方式,想想如果两个地方的电脑混用,同一个文档,电脑却不认识对方编码方式,这就乱码了。
所以这时候就需要统一编码方式,或者iconv转化编码方式。
1.列举电脑支持的编码方式
oliver@ubuntu:~$ iconv -l
以下的列表包含所有已知的编码字符集,但这不代表所有的字符名称组合皆可用于
命令行的 "来源" 以及 "目的" 参数。一个编码字符集可以用几个不同的名称
来表示 (即 "别名")。
437, 500, 500V1, 850, 851, 852, 855, 856, 857, 860, 861, 862, 863, 864, 865,
866, 866NAV, 869, 874, 904, 1026, 1046, 1047, 8859_1, 8859_2, 8859_3, 8859_4,
8859_5, 8859_6, 8859_7, 8859_8, 8859_9, 10646-1:1993, 10646-1:1993/UCS4,
ANSI_X3.4-1968, ANSI_X3.4-1986, ANSI_X3.4, ANSI_X3.110-1983, ANSI_X3.110,
ARABIC, ARABIC7, ARMSCII-8, ASCII, ASMO-708, ASMO_449, BALTIC, BIG-5,
BIG-FIVE, BIG5-HKSCS, BIG5, BIG5HKSCS, BIGFIVE, BRF, BS_4730, CA, CN-BIG5,
2.查询文档编码:
Vim打开文档 -> 输入 - :set fileencoding
3.文档编码方式装换
从GBK到UTF-8
iconv file1 -f GBK -t UTF-8 -o file2