如何解决中文乱码问题

为什么会出现中文乱码问题:

**因为我们的浏览器在传输数据时采用的编码格式是“UTF-8”,而我们的服务器Tomcat在接收并且处理数据时采用的编码格式是“ISO-8859-1”,编码格式不一致造成的中文乱码,所以在处理时我们在服务器端修改编码格式即可

分为2种应用场景【一、在使用简单的MVC模式场景中 二、在使用三层架构中(集成了框架)】

一、在使用简单的MVC模式场景中    

1、GET请求方式(有2种解决方案):

   1-1:
    //获取请求参数,封装成对象
     String username = request.getParameter("username");
    //以ISO-8859-1的方式把参数编译为二进制
    byte[] bt = username.getBytes("ISO-8859-1");
    //把这些二进制重新使用UTF-8来解码
    String username2 = new String(bt,"UTF-8");
   1-2:修改server.xml的配置文件

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

2、POST的请求方式

这种方式提交的参数在请求体中,虽然处理get的先解码后编码的方式依然有效的,但是POST请求中是很可能有大量的非英文数据.(大量的解码然后再编码)

        直接修改请求体的解码方式(UTF-8)

        request.setCharacterEncoding("UTF-8");

       在返回前端数据时候,设置入下

     response.setContentType("text/html;charset=UTF-8");

     注意:这行代码必须在获取第一个参数之前执行,如果已经获取了参数,在执行这个代码则无效.所以,把这行代码作为service方法的第一行代码

二、在使用三层架构中(集成了框架)【未完待续】

解决POST乱码问题:在web.xml中进行配置

  <!-- 处理POST提交乱码问题 -->
      <filter>
          <filter-name>encoding</filter-name>
          <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
          <init-param>
              <param-name>encoding</param-name>
              <param-value>UTF-8</param-value>
          </init-param>
      </filter>
      
      <filter-mapping>
          <filter-name>encoding</filter-name>
          <!-- 如果在前端控制器中我们的拦截方式是  “/”,拦截所有,那么我们在此处应该使用“/*”,拦截所有 -->
          <url-pattern>*.action</url-pattern>
      </filter-mapping>

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值