编码基础
1. ASCII
规定了128个字符,占用一个字节后面7位,最前面1位为0
2. 扩展ASCII
扩展了ASCII的空置区域
3. ISO 8859-1/Latin-1
以ASCII为基础,在空置范围增加96个字符及符号
4. ANSI
与本地环境相关的编码,例:latin1/GBK/BIG5等
5. Unicode
用4个字节,规定了100多万个字符
6. UTF-8
基于Unicode字符集,用1~3个字节,实现了字符的存储规范,兼容ASCII
浏览器编码
1. 浏览器直接输入url
path和参数均为UTF-8编码
IE下,在浏览器取消设置“总是以 UTF-8 发送URL”时,path是ANSI编码,参数则都是ANSI编码
2. 页面超链接访问url
path为UTF-8编码,参数与页面的content-type参数配置的编码有关
3. window.location.href访问url
path为UTF-8编码,参数与页面的content-type参数配置的编码有关
4. ajax访问url
path为UTF-8编码,参数与页面的content-type参数配置的编码有关
IE下,path和参数都为ANSI编码
5. 说明
上面提到的编码,都只针对非ASCII字符
编码转换都是百分号后面跟16进制数字,IE的参数无百分号
上面提到的ANSI编码,是指操作系统默认编码
JS编码函数
1. encodeURI/encodeURIComponent
均为UTF-8编码
2. escape
转换为用16进制的Unicode字符
参考资料:
http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html
http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html