字符集与编码

字符集

  • ASCII字符集
    Amerrican Stadard Code for Information Interchange的简称,等同于国际标准ISO/IEC 646。
    ASCII采用7个比特(7位,0-127)存储,为单字节编码系统。十六进制为0-7F,例如0x21是!,0x7D是}等等。
    ASCII包括英文的大小写,数字,标点符号和一些特殊的操作符,其中包括33个控制字符和95个可显示字符。
  • ANSI字符集
    不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。
  • Unicode字符集
    国际化组织制定的,为各种语言的每一个字符制定了统一的并且是唯一的数学编号。

字符编码

  • ISO-8859-1为单字节编码规则。
    编码方式:将ASCII字符集中的任何字符都转化为一个字节来存放。
  • GB2312,BIG5,Shift_JIS,ISO-8859-2为ANSI编码。
    编码方式:每个字符使用一个字节或多个字节来表示。假如有一个字符串为"中文123",使用ANSI字符集时,"中文"两个字符分别采用2个字节来存放,"123"分别采用1个字节来存放。


  • Unicode字符集有多种编码方式:Unicode,UTF-8,UTF-16,UTF-32,UnicodeLittle, UnicodeBig 等。
    编码方式(Unicode):使用2个字节为每个字符编码。
    编码方式(UTF-8):使用1到6个字节为每个字符编码。 128 个 ASCII 字符只需一个字节编码;如果UNICODE字符由2个字节表示,则编码成UTF-8很可能需要3个字节,而如果UNICODE字符由4个字节表示,则编码成UTF-8可能需要6个字节。
    编码方式(UTF-16):使用2到4个字节为每个字符编码。如果字符编码 U 小于 0x10000, 也就是十进制的 0 到 65535 之内,则直接使用两字节表示,大于0x10000使用4个字节编码。UTF-16比起UTF-8,好处在于大部分字符都以固定长度的字节(2字节)储存,但UTF-16却无法相容于ASCII编码
    编码方式(UTF-32):每一个字符都使用4个字节编码

参考:
http://www.regexlab.com/zh/encoding.htm
http://zh.wikipedia.org/w/index.php?title=Unicode&variant=zh-cn
http://en.wikipedia.org/wiki/UTF-8
http://zh.wikipedia.org/w/index.php?title=UTF-16&variant=zh-hans
http://zh.wikipedia.org/w/index.php?title=UTF-32&variant=zh-cn

原文地址:https://www.cnblogs.com/celery94/p/1504369.html