标签:ext fir 字节 中兴 span rom XML one ant
https://blog.csdn.net/qq_38409944/article/details/80637980
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
标签:ext fir 字节 中兴 span rom XML one ant
原文地址:https://www.cnblogs.com/sheajin/p/12690380.html