大家可能都知道文件编码格式,如gbk格式(ansi格式)字符以1byte编码,中文字符以2字节编码;unicode格式无论是字符还是中文字符都以2字节统一编码,utf-8格式则是可变长编码。不同编码格式的文件都有开头相应的字符标记来标识。如:
ansi格式文件开头没有标识,开头直接为文件真实内容;
unicode格式文件内容都以ff fe开头,紧接着是文件真实内容;
ubigendian文件格式内容都以 fe ff开头,紧接着是文件真实内容;
utf-8格式文件内容都以 ef bb bf开头,紧接着是文件真实内容。
下面以一个例子来揭开文件编码格式的面纱。
下图是一个分别读取内容为aaa的不同格式的文件到内存,然后内容输出到终端,终端都显示为aaa(a的十六进制码为0x61)的实例。
上例说明终端(包括输出终端、编辑器终端,浏览器终端)会根据输出内容的开头2到3个字符来识别编码格式,然后以相应的编码格式显示出来。