字符编码
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.htmlhttp://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html
相关文章推荐
- 使用 Libki 来管理公共用户访问计算机
- 微型计算机的始祖:Altair 8800
- 通过手机、电脑远程开关机,Windows和linux机手机,电脑相互控制
- ASP编码必备的8条原则
- XML指南——XML编码
- C#中字符串编码处理
- mysql binlog二进制日志详解
- ExtJS中文乱码之GBK格式编码解决方案及代码
- 程序员趣味读物 谈谈Unicode编码
- 文本文件编码方式区别
- 详解C++编程中对二进制文件的读写操作
- C语言安全编码之数值中的sizeof操作符
- 整理C# 二进制,十进制,十六进制 互转
- C#实现获取文本文件的编码的一个类(区分GB2312和UTF8)
- VC中BASE64编码和解码使用详解
- 计算机中的字符串编码、乱码、BOM等问题详解
- php实现用手机关闭计算机(电脑)的方法
- Base64编码解码原理及C#编程实例
- C#编码好习惯小结
- 在ASP.NET 2.0中操作数据之五十四:添加新记录时包含一个文件上传选项