http://blog.sina.com.cn/s/blog_6590118a01013a1i.html
如果想准确获取访问一个站点的编码方式,只能从页面meta信息中的charset获取。而这需要解析服务器返回的页面信息,对我们是不可接受的。
侥幸的是,目前国内的大多数站点的编码方式为GB2312、GB18030、GBK(网易采用GBK编码),新增站点多为UTF-8
http://wade6.iteye.com/blog/1744463
下面讨论的编码对象是ASCII码范围以外的字符。ASCII码范围的字符不需要编码。
1、地址栏中的Get请求的url
- 在中文环境中,IE默认对URL的Path部分会采用UTF-8来进行编码,参数部分采用GBK来编码;
- FireFox对URL的Path和参数都采用GBK进行编码。
2、页面中链接的Get请求url
- 在中文环境中,IE对URL的Path部分都会采用UTF-8来进行编码,而参数部分会根据当前页面的编码确定;
- FireFox对URL的Path和参数都会采用当前页面的字符集来进行编码。
3、浏览器做普通Post提交url
- 采用当前页面的字符集进行编码(浏览器大多数时候会根据Http返回头中的Content-Type来确定当前页面的字符集,如果我们想要设定表单提交时所用的字符集编码方式,可以用设定Http返回头中Content-Type的值来实现)。
4、浏览器做Ajax Get提交url
- 根据浏览器的不同,编码时采用的字符集也是不同的;
- FireFox始终采用UTF-8;
- IE会根据本地浏览器的字符集配置来确定采用的字符集。
5、浏览器做Ajax Post提交url
- 始终会采用UTF-8进行字符集编码(它决定于XMLHttpRequest的实现)。
6、总结
由于不同浏览器对get请求的编码方式不同,所以web应用的访问路径及get请求的参数(直接在url中输入的情况下)基本都使用数字和字母表示,很少用中文等其他ASCII码范围之外的字符,以免出现乱码问题。
如果是返回页面中的get请求,服务端肯定会根据自己的情况进行合适的编码,无需关心中文等问题。