http request GET 乱码分析

2021-04-19 16:28

阅读:518

标签:搜索框   enc   work   提交   content   处理   highlight   for   com   

提交一个GET请求

在浏览器地址栏或搜索框输入地址:http://www.baidu.com/content/衣服?keyword=衬衣

其中的中文会被浏览器进行编码,具体编码情况请参考阮大神:关于URL编码

然后,请求需要经过这些处理

1.web server,tomcat

在这里tomcat 有这么两个属性

?1.URIEncoding:这个可以强制指定用什么编码处理URI,默认是ISO-8859-1;

?2.useBodyEncodingForURI:这个设置为true,我们就可以用request.setCharacterEncoding()来设置编码了. 注:这个属性只影响后面的参数

2.servlet/filter
  
    encodingFilter  
    org.springframework.web.filter.CharacterEncodingFilter  
      
        encoding  
        UTF-8  
      
      
        forceEncoding  
        true  
      

这个地方查看源码,只是设置了request的 大专栏  http request GET 乱码分析编码,跟URI没有任何关系

if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) {  
    request.setCharacterEncoding(this.encoding);  
    if (this.forceEncoding) {  
        response.setCharacterEncoding(this.encoding);  
    }  
}

总结

? 经过上面的分析,提出的解决方法是设置tomcat参数。但是这种解决方案会遇到客户端编码不确定的问题,这样又需要引入编码自动分析,增加了后台的复杂性,一般的应用都没有太大的这方面必要。所以这里推荐在前台使用encodeURIComponent(encodeURIComponent(URI))进行两次编码,并且在后台使用URLDecoder.decode(param, "utf-8")进行解码

http request GET 乱码分析

标签:搜索框   enc   work   提交   content   处理   highlight   for   com   

原文地址:https://www.cnblogs.com/lijianming180/p/12268161.html


评论


亲,登录后才可以留言!