ASCII, LATIN1, UTF8 简介

转载:http://blog.csdn.net/allen5200/article/details/6319832

ASCII-American Standard Code for Information Interchange
  • Character repertoire: 
    ASCII 严格来讲就是7个bit大小的字符集,也就是code point介于0-127之间的字符集合。
  • Character code: 
    32-126之间的字元是可打印字元,其他是控制字元。
  • Character encoding: 
    ASCII可以没有任何编码就可以在计算机中用一个字节表示,也就是每个code point被表示成等价的单字节二进制形式。

LATIN1-8bit sing byte coded graphic character sets.

  • Character repertoire:
    Aka ISO-8859-1。是7bit ASCII 字元集的扩充的一种,是8个bit大小的字符集,也就是code point 介于0-255之间的字符集和。
  • Character code:
    包含有191个可打印字符,其余是控制字符或者扩展的欧洲特殊字符。
  • Character encoding:
    与ASCII相似, 每个code point被表示成等价的单字节二进制形式。

UTF8-8bit Unicode Transfer Format

  • Character repertoire:
    包含世界上大部分书写系统的使用的字符,大概1百万个code point (1,114,112 = 220 + 216 )。
  • Character code:
    2,684个保留字符。 98893个图形字符。 435个控制,格式化等特殊用途的字符 。
  • Character encoding:
    是针对Unicode的一种变长的字符编码。能表示Unicode标准中任意一个字符。 UTF8可以将一个字符编码乘1到4个字节大小来表示。

1. 128US-ASCII 字符需要一个字节(U+0000-U+007F)

2. 对于带有区分符号的Latin字母和来自西欧的字符需要两个字节(U+0080-U+7FF)

3. BMP其他的字符需要3个字节

4. Non-BMP的其他字符需要4个字节。




ASCII, LATIN1, UTF8 关系:

    为了向后兼容, Unicode分配128ASCII和256 LATIN1字符的code point没有改变,与它们在ASCII和Latin1的code point 相同。 因此一个只包含ASCII字符的UTF8文件等同于ASCII文件。 同理,每个正确编码的ASCII文件也是有效地UTF8文件。对于12-256的LATIN1字符,因为其编码的特殊性-UTF8需要2个字节来表示一个 LATIN1字符,也就是二者编码的文件当然不能等价。

     如果只考虑各个编码单字节的外围:ASCII(0-127), LATIN1(0-255), UTF8(0-253), 一个UTF8编码的字符串也能被保存为LATIN1文件,但显然是乱码的。反过来,LATIN1编码的文件是无法存为一个UTF8的文件,因为一个大于 253的字符在UTF8中是不存在的。


展开阅读全文

没有更多推荐了,返回首页