字符编码
1.ASCII
用8位即1个字节表示所有状态,共有256个状态,其中,前127号被用来英文字母数字等常用字符
2.扩展字符集
由于ASCII码不能编码更多国家的字符,于是将将128号-255之间的状态用来编码新字符,成为扩展字符集
3.GB2312
ASCII码和扩展字符集中没有可用的状态编码汉字,机智的中国人将127号之后的奇异字符全部取消,规定小于127号的字符和以前一样,但两个大于127的字符连在一起就是汉字,高字节从161-247,低字节从161-254,即组合出7000多个汉字,同时将数学符号希腊字母等包含进去,即所谓的全角,而127号以下就是半角
4.GBK
为了扩充中国汉字,不再要求GB2312中低字节一定大于127,因此又扩充了一万多汉字。命名为DBCS,双字节字符集
5.Unicode
清除以前所有的编码方式,统一用2个字节表示所有国家的字符,即1个英文字符或者一个汉字统称为1个自符,都用2字节表示,对于英文高字节全为0,浪费空间。
6.UTF-8
由于Unicode表示英文浪费空间,未解决其在网络传输问题,Unicode Transfor Format即UTF出现了,而UTF-8就是每次传输1个字节,UTF-8最大的特点就是边长编码方式,可使用1-4个字节表示一个符号,当字符在ASCII范围内时,就用1个字节进行表示。
7.Unicode和UTF-8转换
Unicode编码(十六进制)
|
UTF-8 字节流(二进制)
|
000000-00007F
|
0xxxxxxx
|
000080-0007FF
|
110xxxxx 10xxxxxx
|
000800-00FFFF
|
1110xxxx 10xxxxxx 10xxxxxx
|
010000-10FFFF | 11110xxx10xxxxxx10xxxxxx10xxxxxx |
“汉”字的Unicode编码是0x6C49。0x6C49在0x0800-0xFFFF之间,使用用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将0x6C49写成二进制是:0110 1100 0100 1001, 用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。
URL编码
1.网址路径中包含汉字使用UTF-8编码
2.GET|POST请求用meta标签中定义的编码方式
<meta http-equiv="Content-Type" content="text/html;charset=xx">
3.ajax请求中采用操作系统默认的编码方式
JavaScript编码函数
1. escape()
返回Unicode编码
2. encodeURI()
encodeURI是真正用来编码URI的函数,他对整个URL 进行编码,对特殊符号如 ;/?
不编码
3. encodeURIComponent()
对URL的组成部分进行个别编码,对特殊符号进行编码