windows下编辑文本文档,内容是abc,然后换行
以ANSI编码保存,winhex打开显示为
0D 0A表示\r\n
(ANSI在简体中文windows操作系统中代表gbk编码,繁体中文windows操作系统中代表big5编码)
以utf8编码保存,winhex显示为
其中EF BB BF表明文档是由utf8编码,叫做BOM(byte order mark)
以unicode编码保存,winhex显示
FF FE是BOM,表明是little endian。每个字符采用两个字节表示,所以字符a编码为61 00
以unicode big endian保存,winhex显示
FE FF表明是big endian
linux下
打开vim,执行 :set enc fenc fencs,如下
enc/encoding:vim的默认显示编码格式
fencs/fileencodings:vim依次匹配的编码列表
fenc/fileencoding:文件的编码格式,如果和enc不一样,则保存时会从enc转为fenc,读取时从fenc转为enc
文件test内容为abc,通过 :set fenc显示编码格式为utf8
od -t x1 test 显示为
0a是linux下的换行符,0d 0a是windows下的换行符
将文件以utf16格式保存,执行 :set fenc=utf-16(等价 :set fenc=utf-16be)
od -t x1 test 显示为
每个字符对应2个字节,且以大端形式保存
此时用vim打开,由于fencs中的utf-8可以解码,所以fenc为utf8
vim的显示编码也是utf8,文件内容显示如下
其中 ^@对应字节00,为不可打印字符的显示形式。
如果需要正常显示文件内容,需要重新以utf-16的格式显示文件内容,执行 :edit ++enc=utf-16
以utf-16le格式存储,:set utf-16le
od -t x1 test 显示为
vim打开后同样有问题,因为utf8也可以解码,需要以utf-16le格式解码,执行 :edit ++enc=utf-16le