字符 & 字符集 & 字符编码

字符(Char):是一个信息单位,在计算机里面,一个中文汉字是一个字符,一个英文字母是一个字符,一个阿拉伯数字是一个字符,一个标点符号也是一个字符。

字符集(Charset):是一个系统所支持的所有的抽象字符的集合。其中字符为各种文字和符号的总称。

字符编码(Character Encoding):是一套法则,使用该法则,可以使自然语言中的一套字符集合 与 其他东西的一个集合进行配对。即在符号结合和数字系统之间建立一套关系。通俗地讲,字符编码就是将符号转换为计算机可以接受的数字系统的数,称为数字代码。

常用的字符集:

常见的有:ASCII字符集,GB2312字符集,BIG5字符集,Unicode字符集

ASCII字符集和编码:

ASCII是基于拉丁字母的一套编码,主要用于现代英语,勉强支持西欧语言。

ASCII字符集:包含了控制字符(换行,退格键,回车键),可显示字符等。

ASCII编码:将ASCII字符集转换为计算机可以识别的编码规则。使用7位(bits)表示一个字符,可以支持128个字符。使用8位(bits)表示一个字符,共支持256个字符

ASCII编码最大的缺点:只能显示26个基本的英文字符,阿拉伯数字,英式标点符号等共256个字符。

GBXXXX字符集和编码:

天朝有了计算机后,必须引入一套规则,用于将汉子转换为计算机可以接受的数字系统的数。

天朝专家把127号以后的字符都取消掉,并且规定:小于127的字符的意义与原来相同,大于127的字符,每两个连在一起表示一个汉字,前面一个字节成为高字节,后面一个字节成为低字节,这样大约组合出来7000个左右的汉字,在这些编码里,连ASCII里本来就有的数字,标点符号统统重写编写了一遍,这就是常说的“全角”“半角”字符,127以前的称谓半角字符。

特点:采用了多字节编码,每个字可以由1,2个或者4个字节组成

BIG5字符集和编码:

BIG5字符集主要用来表示“繁体中文”,称为大5码。它是一套双字节字符集,使用了双八码存储方法,使用两个字节来安放一个字,第一个字节称为“高位字节”,第二个字节称为低位字节。

伟大的创想-Unicode:

为了解决世界上各种语言的问题,防止互相访问出现乱码的情况,产生了Unicode。

Unicode是基于通用字符集发展的,被称为统一码,万国码。

Unicode 与 UTF-8 UTF-16 UTF-32:

简述:Unicode是字符集,UTF-8/16/32 是三种字符编码方案:

UTF-32:

使用4个字节(32位)的数字来表达每个字母,数字。每个数字使用4个字节来表示,就空间效率而言,是非常没有效率的。

这种方法也有优点,因为其每个字母/数字使用4个字节数字来表示的,所以一个字符串中的第N个字符是从4*N个字节开始的,即每一个字符的长度都是固定的。

UTF-16:

尽管unicode表示的字符非常多,但是通常使用不会超过前65535个字符,所以,UTF-16使用2个字节(16位)的数字来表示系统中的每个字母,数字,符号等。它最明显的优点就是空间效率上是utf-32的两倍。

UTF-8:

UTF-8是基于Unicode的一种可变长度的字符编码,它可以表示Unicode中的任何一个字符,且编码的第一个字节与ASCII完全兼容。

UTF-8使用一到四个字节来表示一个字符。

(1) 128个ASCII字符,只需要1个字节编码

(2) 带有附加符号的拉丁文,阿拉伯文等需要2个字节编码

(3) 其他基本多文种平面,通常使用3个字节编码

(4) 极少多食用4个字节编码

优点:

UTF-8不存在字节顺序的问题(UTF-16存在),一份以utf-8编码的文件,在不同的计算机之间,是一份相同的bit流。

UTF-8是ASCII的超集,因为一个纯ASCII编码的字符,也是一个合法的UTF-8编码字符。

缺点:

因为每个字符使用不同数量的字节编码,所以一个字符串中想要定位一个字符的位置,就会很复杂。

Unicode 转 UTF-8的规则:

比如“汉”字,其Unicode编码是6C49,6C49在 0800-FFFF之间,所以才用第三套模版转换。

6C49转换成二进制是0110 1100 0100 1001 ,把这个比特流转换成第三套模版就是 0110 110001 001001

然后填充到1110xxxx 10xxxxxx 10xxxxxx中x的位置上

即为11100110 10110001 10001001  即E6 B1 89 这就是UTF8编码

一个有趣的问题,当你在windows电脑桌面建立一个文本文件,输入“联通”两个字后,重新打开,会出现乱码。

答:

文本文件的默认编码是ANSI,属于GBxx系列,每个汉字采用2个字节编码。所以“联通”对应的编码为:

可以看到第一个字符的 高位字节前三位是110  低位字节前2位是10

第二个字符的 高位字节前三位110,低位字节前2位是10

这一下就跟UTF-8编码的第二套规则相符合,系统就会认为这是utf8编码,然后在解码的时候就采用了错误的方式,导致了乱码。

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

推荐阅读更多精彩内容