• 详解get请求和post请求参数中文乱码的解决办法


    首先出现中文乱码的原因是tomcat默认的编码方式是"ISO-8859-1",这种编码方式以单个字节作为一个字符,而汉字是以两个字节表示一个字符的。

    一,get请求参数中文乱码的解决办法

    对于get请求解决中文乱码有两种途径:

    第一种是修改tomcat默认的编码方式为"UTF-8"

    在tomcat的server.xml里把

    <Connector connectionTimeout="50000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

    修改为

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

    使用这种方式带来的问题是在你本机上这么做没有问题,你无论怎么去修改你tomcat上的配置都没问题,

    但是测试环境和生产环境的服务器不是轻易说改就能改的,特别是有些公司的服务器是租赁的,那么在我们

    不知道测试环境和生产环境服务器配置的时候就要使用以下的方法来解决get请求的中文乱码问题。

    第二种是对请求行的汉字进行编码和解码

    来自页面的一个get请求:

    window.location.href = getContextPath()+"/manage/user/detail?name="+encodeURI(encodeURI("小明"));

    服务器端:

    String name = request.getParameter("name");
    orgname = URLDecoder.decode(name,"UTF-8");

    因为get请求的参数在请求行上,我们不能像解决post请求那样使用 request.setCharacterEncoding("UTF-8");这种方式是修改方法体的编码方式。

    所以只能使用以上的方式分别对请求行的汉字进行编码和解码。其实解决get请求中文乱码问题最好的方式是避免使用中文,比如上面的name="小明",

    如果name是一个恒定值的话,你可以在你的程序里这样写:

     1 window.location.href = getContextPath()+"/manage/user/detail?name="+encodeURI(encodeURI("xiaoming"));
     2 
     3 public static final String NAME = "xiaoming";//定义一个常量
     4 
     5 String name = request.getParameter("name");
     6 
     7 if(name.equals(NAME)){
     8 
     9   name = "小明"
    10 
    11 }

    如果你必须传中文,而且name这个参数的值是动态的,不断变化的,建议你在数据库里面建立一张表,

    让你的中文参数的值都有一个对应的id,在请求发送前,先查一下这张表。

    二,post请求参数中文乱码的解决办法

    对于post请求,请求中问乱码的两种解决办法,就喜闻乐见了。一般也不会有post请求参数中文乱码吧,认为任何一个java的web项目因该都配置了字符集过滤器吧。

    但为了这文章的完整性和以后工作学习方便,我还是把这两种方法贴上来吧。

    第一种:

    request.setCharacterEncoding("UTF-8");

    第二种:

     1 <filter>
     2     <description>字符集过滤器</description>
     3     <filter-name>encodingFilter</filter-name>
     4     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
     5     <init-param>
     6         <description>字符集编码</description>
     7         <param-name>encoding</param-name>
     8         <param-value>UTF-8</param-value>
     9     </init-param>
    10 </filter>
    11 <filter-mapping>
    12     <filter-name>encodingFilter</filter-name>
    13     <url-pattern>/*</url-pattern>
    14 </filter-mapping>  
  • 相关阅读:
    List<Object> 查询解析优化
    hibernate 中 query.list()的优化
    移动端屏幕宽度自适应原理及实现
    js获取用户当前地理位置(省、市、经纬度)
    mescroll.js简单的上拉加载、下拉刷新插件,带完整注释
    Web前端性能优化总结——如何提高网页加载速度
    浏览器渲染页面的原理及流程
    优酷1080p的kux格式文件怎么转换为MP4格式?
    js处理文章详情页点击量统计
    plupload上传视频插件jQuery+php
  • 原文地址:https://www.cnblogs.com/liuniansishui/p/8202834.html
Copyright © 2020-2023  润新知