ANSI:16384个字符。这就是ANSI字符标准。英文一个字节,中文两个字节
对于ANSI,不同的国家和地区制定了不同的标准,由此产生了GB2312(简体中文),BIG5(繁体中文),JIS(日文)等各自的编码标准。但不同的ANSI编码在不同语言之间是不兼容的,所以对于不同的操作系统之间文件的传输,或者在同样的操作系统下,源文件语言不同于OS的语言文件的传输,需要转换成UT8格式。
<wbr></wbr>
UNICODE: 使用两个字节对世界上几乎所有的语言进行编码(0x0000-0xFFFF),65536个字符,每种语言的代码段不同,两个字节(英文、中文都是两个字节)所表达的字符是唯一的,所以不同语种可以共存于文本中,解决国际化的问题
<wbr></wbr>
Unicode有两套标准,一套叫UCS-2(Unicode-16),用2个字节为字符编码,另一套叫UCS-4(Unicode-32),用4个字节为字符编码。
<wbr></wbr>
UTF8是Unicode一种压缩形式,英文A在unicode中表示为0x0041,老外觉得这种存储方式太浪费,因为浪费了50%的空间,于是就把英文压缩成1个字节,成了utf8编码,但是汉字在utf8中占3个字节,显然用做中文不如 ansi合算,这就是中国的网页用作ansi编码而老外的网页常用utf8的原因。
关于BOM
<wbr><wbr><wbr><wbr><wbr><wbr><a name="_Toc344107574">BOM</a>(Byte Order Mark)是一个字符(本义为"ZERO WIDTH NO-BREAK</wbr></wbr></wbr></wbr></wbr></wbr>
SPACE"),它表明UNICODE文本的UTF-16,UTF-32的编码字节顺序(高字节低字节顺序)和编码方式(UTF-8,UTF-16,UTF-32,其中UTF-8编码是字节顺序无关的)。
<wbr></wbr>
UCS规范建议我们在传输字节流前,先传输字符"ZERO
WIDTH NO-BREAK SPACE"。
这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。
<wbr></wbr>
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。
如果接收者收到以EF BB BF开头的字节流,就是UTF-8编码。
<wbr></wbr>
UTF-8 no BOM 格式,没有带bom字符头。
<wbr></wbr>