今天线上获取一个日志文件,想看看,结果无论是用more还是vim都是乱码。就顺手查了查linux下如何解决乱码问题
1.通过enca命令来查看文件的编码
sudo aptitude search enca
sudo aptitude install enca
zhaoming@zhaoming:/mnt/share/file$ enca aa
Universal transformation format 8 bits; UTF-8
原来的文件编码
zhaoming@zhaoming:/mnt/share/file$ enca anci.TXT
Universal transformation format 8 bits; UTF-8
CRLF line terminators
修改文件编码
zhaoming@zhaoming:/mnt/share/file$ enconv -x UCS-4 anci.TXT
修改后的文件编码
zhaoming@zhaoming:/mnt/share/file$ enca anci.TXT
Universal character set 4 bytes; UCS-4; ISO-10646
LF line terminators
在测试的过程中,发现若是
zhaoming@zhaoming:/mnt/share/file$ echo $LANG
zh_CN.UTF-8
新建一个文件
zhaoming@zhaoming:/mnt/share/file$ touch 33
zhaoming@zhaoming:/mnt/share/file$ echo “hello world” > 33
zhaoming@zhaoming:/mnt/share/file$ enca 33
7bit ASCII characters
若是只有英文的情况下,采用的是ASCII,那么加上中文
zhaoming@zhaoming:/mnt/share/file$ echo “中国” > 33
zhaoming@zhaoming:/mnt/share/file$ cat 33
中国
zhaoming@zhaoming:/mnt/share/file$ enca 33
Universal transformation format 8 bits; UTF-8
系统默认将编码改成了UTF-8
一直想看都有什么编码,无论是使用 enca -l 还是 enconv -l 都不行,最后通过
iconv -l 才看到了所有的编码
zhaoming@zhaoming:/mnt/share/file$ iconv -l
下面的列表包含所有有已知的字符编码集.这
并不意味着这些名字的所有组合能够被使用在
命令行参数FROM和TO中.一种已编码的字符集能
列出几个不同的名字(别名).
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,
CN-GB, CN, CP-AR, CP-GR, CP-HU, CP037, CP038, CP273, CP274, CP275, CP278,
….
采用iconv来转化编码
zhaoming@zhaoming:/mnt/share/file$ iconv -f UTF-8 -t GBK 33 | tee 44
�й
zhaoming@zhaoming:/mnt/share/file$ cat 44
�й
转化后编码就成了GB2312了。
zhaoming@zhaoming:/mnt/share/file$ enca 44
Simplified Chinese National Standard; GB2312
不知道是不是我用的不对,最后发现还是 iconv来转码比较方便!用enca来查看编码比较容易!