码迷,mamicode.com
首页 > Web开发 > 详细

HTTP协议的编码问题

时间:2020-04-13 12:15:46      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:ext   fir   字节   中兴   span   rom   XML   one   ant   

https://blog.csdn.net/qq_38409944/article/details/80637980

https://blog.csdn.net/a83370892/article/details/82726700?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2

ISO-8859-1可以用来做中转站,而gbk不可以 https://blog.csdn.net/qq_38409944/article/details/80637345

http://www.ruanyifeng.com/blog/2010/02/url_encoding.html

 

请求:

结论1:网址路径的编码,用的是utf-8编码。

结论2:查询字符串的编码,用的是操作系统的默认编码。

以上两个结论都是在浏览器中直接输入网址得到

 

前面说的是直接输入网址的情况

(即这个时候服务器未给到响应之前(1、html中的<meta http-equiv="Content-Type" content="text/html;charset=xxxx">

 2、response.setContent())

但是更常见的情况是,在已打开的网页上(这个时候服务器已经响应了,可能会设置content-type,1、在html中设置,2、在response.setContent中进行设置),直接用Get或Post方法发出HTTP请求。

 

--------------------------------------------

在已打开的网页上

根据台湾中兴大学吕瑞麟老师的试验,这时的编码方法由网页的编码决定,也就是由HTML源码中字符集的设定决定()。

  <meta http-equiv="Content-Type" content="text/html;charset=xxxx">

如果上面这一行最后的charset是UTF-8,则URL就以UTF-8编码;如果是GB2312,URL就以GB2312编码。

 

结论3就是,GET和POST方法的编码,用的是网页的编码。

--------------------------------------------

 

在Ajax调用中,IE总是采用GB2312编码(操作系统的默认编码),而Firefox总是采用utf-8编码。这就是我们的结论4。

 

--------------------------------------------

假定前面你都看懂了,那么此时你应该会感到很头痛。因为,实在太混乱了。不同的操作系统、不同的浏览器、不同的网页字符集,将导致完全不同的编码结果。如果程序员要把每一种结果都考虑进去,是不是太恐怖了?有没有办法,能够保证客户端只用一种编码方法向服务器发出请求?

回答是有的,就是使用Javascript先对URL编码,然后再向服务器提交,不要给浏览器插手的机会(因为经过编码后,网址的字符组成就符合规则了,就不会编码了)。

因为Javascript的输出总是一致的,所以就保证了服务器得到的数据是格式统一的。

 

--------------------------------------------

 

encodeURI()是Javascript中真正用来对URL编码的函数。

它着眼于对整个URL进行编码,因此除了常见的符号以外,对其他一些在网址中有特殊含义的符号"; / ? : @ & = + $ , #",也不进行编码。

编码后,它输出符号的utf-8形式,并且在每个字节前加上%。

 

 

 

==========================================

iso可以做中转,所以可以

String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

如果改为gbk,那么偶数个字符是可以作为中转,而奇数个不可作中转  https://blog.csdn.net/qq_38409944/article/details/80637345

 

HTTP协议的编码问题

标签:ext   fir   字节   中兴   span   rom   XML   one   ant   

原文地址:https://www.cnblogs.com/sheajin/p/12690380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!