为什么要编码
网络标准对URL做了规定:"只有字母和数字[0-9a-zA-Z]、一些特殊符号"$-_.+!*'(),"[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。"
编码的四种情况
- 网址路径中包含汉字
网址路径的编码,用的是utf-8编码 - 查询字符串包含汉字
查询字符串的编码,用的是操作系统的默认编码 - Get方法生成的URL包含汉字
这时的编码方法由网页的编码决定,也就是由HTML源码中字符集的设定决定 - Ajax调用的URL包含汉字
在Ajax调用中,IE总是采用GB2312编码(操作系统的默认编码),而Firefox总是采用utf-8编码
编码的四个函数
- encodeURI()
- encodeURIComponent()
- decodeURI()
- decodeURIComponent()
区别在于:
encodeURI方法不会对下列字符编码
1. ASCII字母
2. 数字
3. ~!@#$&*()=:/,;?+'
encodeURIComponent方法不会对下列字符编码
1. ASCII字母
2. 数字
3. ~!*()'