zoukankan      html  css  js  c++  java
  • post和get请求的参数乱码

    对于做Java WEB项目同学来说,中文乱码问题是一个经常遇到而又非常头痛的问题,而最容易出现乱码的环节就是在浏览器向服务器发送请求的过程,至于出现乱码的原因不是本文的关注的重点,想了解的朋友可以参考

    http://zhaomin819111.blog.163.com/blog/static/10659004200943112950956/

    本文主要介绍如何有效解决web请求中的乱码问题,其实解决方法有很多种,不同的请求类型解决方法也不相同。

    本文只介绍最方便的一种:

    1、针对Post方式提交的请求如果出现乱码,可以每次在request解析数据时设置编码格式:

    request.setCharacterEncoding("utf-8");

    也可以使用编码过滤器来解决,最常用的方法是使用Spring提供的编码过滤器:

    在Web.xml中增加如下配置(要注意的是它的位置一定要是第一个执行的过滤器):

    <filter>
    <filter-name>charsetFilter</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>
    <init-param>
    <param-name>forceEncoding</param-name>
    <param-value>true</param-value>
    </init-param>
    </filter>

    该过滤器要做的其实就是强制为所有请求和响应设置编码格式:

    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");

    2、针对Get方式的乱码问题,由于参数是通过URL传递的,所以上面通过request设置的编码格式是不起作用的。

    GET方式提交总是利用默认的ISO-8859-1来进行编码参数,

    get方式有两个处理方法:

    1.利用String。通过ISO-8859-1编码获取到byte[],然后进行UTF-8再次编码

    String username = new String(username.getBytes("ISO-8859-1"), "UTF-8"); //通过ISO-8859-1编码获取到byte[],然后进行UTF-8再次编码

    2、在tomcat中的server.xml进行配置URIEncoding="UTF-8"。在每次发生请求之前对URL进行编码,最简便的,在服务器端配置URL编码格式。

    <span style="font-size:12px;"><Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1"
       connectionTimeout="20000"
       redirectPort="8443" /></span>

  • 相关阅读:
    C# List<T>排序总结
    转 SQL连接查询语句(内、外、交叉和合并查询)
    AngularJS实现数据列表的增加、删除和上移下移等功能实例
    在ASP.NET MVC项目中使用极验验证(geetest)
    WCF契约定义及主要用途
    用C#创建Windows服务(Windows Services)
    sqlserver事务加锁机制
    unicode-range特定字符使用font-face自定义字体
    Unicode范围预览
    中文汉字和常见英文数字等的unicode编码范围实例页面
  • 原文地址:https://www.cnblogs.com/Syney/p/8044147.html
Copyright © 2011-2022 走看看