为了理解GBK、Unicode、UTF-8 等各种格式编码,我们来做一个试验,用WIN7自带的记事本写如下文字:
再接着用另存功能,分别用ANSI、Unicode big endian、Unicode、UTF-8保存为文件hzbm_ans.txt、hzbm_ucb.txt、hzbm_ucd.txt、hzbm_utf.txt。
再用SHELL下的debug 工具查看文件的原始内容,大体可以看出来:ANSI格式,汉字用的是GBK编码,其中英文1字节、汉字2字节; Unicode和UTF-8格式,本质上都是Unicode 编码,即2字节表示一个中英文符,只不过UTF-8对Unicode做了一个转换,ASCII字符用1个字节表示,中文用两个字符表示,具体转换方式见第一张图片描述。
另外,Unicode文件以标志FE FF 开头,可以注意到,UTF-8文件把标志FE FF 做了转换。
Unicode有两种格式,一种是主机字节序(小尾),另一种是大字节序(Unicode big endian)。
原始内容图中,从红色圈住的部分,可以看出“编”字的不同编码方式。