您的位置:首页 > 理论基础

字符编码

2016-07-05 23:30 197 查看

字符编码

介绍

计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。它们是根据指定的编码映射表查找出对应的字符来显示的。最早的编码表示美国制定的ASCII码,由于英文字符比较少,用一个字节就完全可以表示出来了,所以ASCII编码中,一个字符是占一个字节的。

字节

一个字节为8位(为什么是8位和当时硬件处理器发展有关,不是重点)
0101 1010


常用的编码

ASCII码

ASCII(美国信息交换标准代码)使美国制定的适用于使用英文字符的国家,ASCII
码一共规定了128个字符的编码,比如空格"SPACE"是32(二进制00100000),
大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的
控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。

ASCII码每个字符只占一个字节,仅适用于英文字符国家使用的编码


ASCII不能解决的问题

由于其它有些国家,它们国家的字符集远超过256个,所以只使用一个字节是无法表示的,需要使用多个字节来表示,因此出现了Unicode编码思想,Unicode的想法是把全世界所有的字符集都包含在内,但是这又产生了个问题,需要注意的是,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。


UTF-8编码

互联网的普及,强烈要求出现一种统一的编码方式。UTF-8就是在互联网上使用最广的一种Unicode的实现方式。

注意:UTF-8是Unicode的实现方式之一


UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表
示一个符号,根据不同的符号而变化字节长度。

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


备注

UTF-8已经成为国际事实上的标准了,所以开始时推荐统一使用UTF-8编码。


总结

尤其在做web开发时,字符编码问题是比较常遇到的问题,通常分析编码和解码是否使用同一种编码格式。推荐统一使用UTF-8编码和解码。但是在http请求时URL使用的是ASCII码编码的,如果有特殊符号是会经过转码的。


参考

http://www.cnblogs.com/greatverve/archive/2011/12/12/URL-Encoding-Decoding.html

http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编码 计算机 二进制