字符编码总结


基本概念:
二进制:计算机内部使用电平的高低2种状态(01)存储信息,即2进制计数。
字节:计算机的一个存储单位,由8位的01码组成。
ASCII:美国用一个字节表示英语文字符号的一套编码规则。如,78是N。ascii是编码的鼻祖。

1、字符集的构成:字符的集合和编码方式。

字符集合是某种语言里文字、符号、特殊符号的集合。如GB2312包含6700个字符,有些姓名里的生僻字不能显示,于是扩展了范围就是GBK。

编码方式是对这些集合元素编号的方式。如1代表a,2代表b等。可以用你的想法给abc编值;或者给每个汉字编值。


美国的统一编码

为了计算机间交互信息无障碍,美国的科学家首先统一了编码,就是ASCII编码。它是用一个字节,8bit表示一个字符表示美语言里的所有符号。其中1~32以内,是通讯、控制等特殊字符,不可打印的,如空字符、响铃、退格等;33到127包含了符号、数字、字母等所有美国用到的字符。
但是,这是美国标准,不能满足其他国家的需要;如,英国的英镑符号、拉丁语的中音、特别是中国等东亚国家完全不同的文字体系。
  英国英语与美国基本相同,只需要扩充个别字符,扩充的字符也在256内,故只需在ascii上进行简单的扩充即可。
由此开始,进行了编码的演变,但根本目的是不变的,用计算机的01表示文字。

扩展到世界

中国汉字数万个,用256个不能完全表示,原来的8bit需要扩充为2个字节,16bit。第一个字节叫高字节,第二个叫低字节。为了与ascii兼容,ascii已占用的编码2个字节都不再占用,如128以内的不用,2个字节转换成值在161~254之间。这就是GB2312,包含了常用的6700个字符和682个中文符号(中文果然复杂!)
但是,后来发现这些还是不够,很多人名字中的生僻字打不出来,还要扩。于是约定,高字节只要>128,就表示和后续的字节一起表示1个汉字;低字节中被ascii占用的161个字符就释放了,于是在原GB2312的基础上,有扩增了近2W个汉字,包含了繁体字。这个是GBK。

世界的统一编码

于是各个国家搞出了类似我们的GB2312、GBK的各自的编码,互相之间不支持。这时ISO组织决定统一标准,重新标志了包括地球上所有文明、所有字母和符号的编码。"Universal Multiple-Octet Coded Character Set",简称 UCS, 俗称 "UNICODE"。
UNICODE与之前的所有区域编码不兼容,没有简单的办法转成GBK或其他,需要查阅编码对照表。
为了在网上传输unicode,又开发UTF(UCS Transfer Format);UTF8就是每次8位传输数据,UTF16是每次16位。
unicode到utf8的转换:为了节省网络带宽和时间,对unicode做了优化,规定:多少编码以内的,用一个字节表示;多少编码以内的,用2个字节表示;多少编码之间的用3位字符表示。英文还是要用1个字节表示;中文都是用3个字节表示,按固定的格式也挺简单的,但意义不明白。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值