Http请求url参数字符集

Posted Program_青菜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Http请求url参数字符集相关的知识,希望对你有一定的参考价值。

http请求:

浏览器 --》服务器(tomcat应用服务器)---》应用

1,浏览器。

  url:浏览器默认采用UTF-8,对URL参数中非ASCII进行百分号编码(RFC3986“%编码”进行编码);

  表单(get/post)请求:采用当前页面编码,对URL参数中的非ASCII字符进行百分号编码;

  ajax:  get方式发起的请求,IE11和chrome会根据当前页面的默认编码对URL参数中的非ASCII字符进行百分号编码。而IE6不会对URL非ASCII表示的路径信息和参数信息进行编码。

      post方式发起的请求,即便设定了application/x-www-form-urlencoded头信息,浏览器也不会对数据做任何的编码(或者说浏览器不把发送的数据当做URL的一部分)。

  采用encodeURIComponent()或者encodeURI()对非ASCII字符进行编码。encodeURIComponent与encodeURI区别:

        1,encodeURI方法不会对下列字符编码  ASCII字母、数字、[email protected]#$&*()=:/,;?+‘

        2,encodeURIComponent方法不会对下列字符编码 ASCII字母、数字、~!*()
  另外还可以使用escape()对字符串进行编码。
2,Tomcat服务器。

    Tomcat会使用默认字符编码“ISO-8859-1”对URL参数进行解码。可以通过server.xml文件修改字符集编码:

  <Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

3,应用

  可以通过使用java.net.URLDecoder与java.net.URLEncoder、或者指定字符集编码重新构造String对象。

  

以上是关于Http请求url参数字符集的主要内容,如果未能解决你的问题,请参考以下文章

如何解决Http请求参数中加号变空格问题

http、https请求URL中带有&等特殊字符的解决方法

http请求 url 传递参数(特殊字符)解决方法

Http请求时URL中的中文编码

http get请求时参数被转码的问题

PHP使用http_build_query()构造URL字符串的方法(可将POST参数组转换拼接成GET请求链接)