字符集和字符编码

一、概念

字符(Character):各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。
字节(Byte):计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。
字符串(string):一个连续的字符序列,在存储上类似于字符数组。
字符集(Character Set):多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同。
字符编码(Character encoding):也称字集码,是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。
单字节字符集(Single Byte Character Set, SBCS):所有字符都只用一个字节表示。用一个字节表示的0来标志SBCS字符串的结束。
多字节字符集(Multi-Byte Character Set, MBCS):部分字符用一个字节表示,部分字符用两个或更多字节表示。Windows中的MBCS包含两种字符,单字节字符(Single-Byte Characters)和双字节字符(Double-Byte Characters)。有一些特定的值被保留用来表明它们是双字节字符的一部分。MBCS字符串也使用单字节的0来标志字符串结束。
Unicode字符集:通常又称为宽字符集(Wide Character Set),所有字符都用两个字节来表示。 注意,不要混淆Unicode字符集与MBCS,Unicode字符串采用两个字节表示的0作为结束标志。

字符表 字符集 字符编码

二、常见字符集及字符编码

常见字符集和字符编码

ASCII

● ASCII(American Standard Code for Information Interchange,美国信息互换标准编码)是基于罗马字母表的一套电脑编码系统。
● 包含了英文大小写字符、阿拉伯数字和西文符号等可显示字符以及回车键、退格、换行键等控制字符。
● 主要用于显示现代英语和其他西欧语言,是现今最通用的单字节编码系统,并等同于国际标准ISO 646。
● 基本字符集采用7位(bits)表示一个字符,共128个字符,字符值从0到127,其中32到126是可打印字符。
● 扩展字符集采用8位(bits)表示一个字符,共256个字符,增加了表格符号、计算符号、希腊字母和特殊的拉丁符号,可以表示更多的欧洲常用字符。

ANSI(GB2312, GBK, Big5, GB18030)

1.GB2312
GB2312是一个简体中文字符集,使用二维矩阵编码法对所有字符进行编码,采用两个字节表示一个汉字。

2.GBK
GBK是GB2312的扩展,K为扩展的汉语拼音中“扩”字的声母。
字符有一字节和双字节编码,一字节和ASCII保持一致。

3.Big5
Big5又称为大五码或五大码,是一种繁体字编码,主要在台湾、香港和澳门等使用繁体字的地区使用,采用双字节表示一个字符。

4.GB18030
● GB18030是我国目前最新的变长多字节字符集,兼容GB2312、GBK以及Unicode3.1。
● 采用变长多字节编码,每个字可以由1个、2个或4个字节组成。
● 编码空间庞大,最多可定义161万个字符。
● 支持中国国内少数民族文字,不需要动用造字区。
● 汉字收录范围包含繁体汉字以及日韩汉字。
● GB18030包含三种长度的编码:单字节的ASCII、双字节的GBK(略带扩展)、以及用于填补所有Unicode码位的四字节UTF区段。

Unicode

不同的国家和地区制定了适用于本国和地区的字符表示标准,但是这些标准之间往往是不兼容的,比如用GB18030编码的文件通过阿拉伯文的编码标准去解析,肯定是显示一堆乱码。同时,随着计算机科学和互联网的不断发展,软件国际化逐渐成为了必然的趋势。在此背景下,一种包含了世界各地绝大部分文字字符的通用字符集就应运而生了 -- Unicode字符集。
1.编码方式
Unicode存在两种编码方式,分别是UCS-2和UCS-4。
UCS-2: 采用两个字节编码,理论上最多可以表示2^16(65536)个字符。
UCS-4: 采用四个字节编码,理论上最多可以表示2^32(2147483648)个字符,完全可以涵盖所有语言的字符。

2.实现方式
Unicode的实现方式不同于编码方式。一个字符的Unicode编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的实现方式有所不同。Unicode的实现方式称为Unicode转换格式(Unicode Transformation Format,简称为UTF)。
● UTF-8: 以8bits(1字节)为单位对UCS进行编码,可以用1到4个字节来表示一个字符,是一种字节变长度编码方式。
● UTF-16: 以16bits(2字节)为单位对UCS进行编码,可以用2字节或4字节来表示一个字符,是一种字节变长度编码方式。
● UTF-32: 以32bits(4字节)为单位对UCS进行编码,用4字节来表示一个字符,是一种字节固定长度编码方式。

UTF-8:
由于UTF-16和UTF-32都存在空间浪费的情况,而UTF-8采用字节为单位的变长编码方式,大大提高了空间利用率,因此,UTF-8也是我们平时用的最多的编码方式。

UTF-8的编码规则有两条:
● 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的Unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。
● 对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的Unicode码。


UTF-8编码方式
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,289评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 95,968评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 171,336评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,718评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,734评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,240评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,631评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,599评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,139评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,166评论 3 345
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,286评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,917评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,604评论 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,075评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,205评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,814评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,351评论 2 365

推荐阅读更多精彩内容

  • 0 前言 在平时的开发过程中大部分人应该都遇到过中文乱码问题,浏览网页时也会遇到内容显示乱码的情况,一般遇到这种情...
    小猪啊呜阅读 2,590评论 1 10
  • 字符是用户可以读写的最小单位。计算机所能支持的字符组成的集合,就叫做字符集。字符集通常以二维表的形式存在。二维表的...
    刘惜有阅读 8,136评论 2 14
  • 乱码 乱码是怎么出现的呢?对同一组二进制数据,不同的编码会解析出不同的字符,用对了编码,解析出来的字符组成的文字是...
    __Jasmine__阅读 621评论 0 0
  • 为了那一天 文/厉雄(西班牙) 为了那一天,我打捞 一百首唐诗里的渔火和灯盏 修葺一座佛塔,守候 静静的等待 为了...
    厉雄阅读 325评论 0 0
  • 秋天来了,又是满天的清香; 柳枝青,水波碧,听鸟幽鸣。 大树下的草地上,翻开的书本; 一页页、随风翻阅; 累了的你...
    居山有名阅读 191评论 0 0