乱码问题

来源:互联网 发布:seo营销工具 编辑:程序博客网 时间:2024/06/10 23:07
/**
* JavaWeb解决乱码的方式:
* 1)、请求乱码
* 1、get请求:
* 解决方法:需要修改tomcat的配置文件server.xml。
*   <Connector connectionTimeout="20000" port="8080" 
    protocol="HTTP/1.1" redirectPort="8443"  URIEncoding="utf-8"
   />
原因:get请求的,浏览器发送中文,会吧请求参数带在url地址后面。
url地址默认都是BASE64编码的,这种不支持中文。
如果是中文编码,浏览器就会按照默认的规则。如果utf-8的就会按照utf-8编码地址。
服务器并不知道浏览器采用哪种方式编码了地址。还是使用默认的BASE64解码。
需要告诉服务器,解析地址的也使用UTF-8编码。 URIEncoding="utf-8"

* 2、post请求:
* 原因:数据是带在请求体中的。不能使用上面的方式。
* 解决办法:在第一次获取请求体中数据的时候,设置好请求体中的数据编码方式,获取的时候就会按照这种编码方式解码
* request.setCharacterEncoding("UTF-8");
* 2)、响应乱码
* 1)、原因:浏览器接受到服务器数据以后,并不知道服务器是怎么编码的。
* 所以必须告诉浏览器数据的编码方式(解码)。还必须告诉浏览器数据的内容类型(正确打开)
* 第一种:
* response.setContentType("text/html;charset=utf-8");

* 第二种:
* response.setCharaterEncoding("utf-8");
* response.setContentType("text/html");

* 3)、SpringMVC提供的乱码解决方案;
* 1)、服务器安装上就先把uri的编码方式改掉
* 2)、主要解决post和响应乱码
* 提供了一个专门解决乱码的一个过滤器。
* 作用:所有请求过来先设置编码方式,再放行请求
* CharacterEncodingFilter
* 使用:

* 1)、去web.xml配置这个filter

 <!-- 解决中文乱码问题,只处理post--> 
<filter>
<filter-name>encodingFilter</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>


* @param user
* @return

*/




乱码解决:
<!--2、Filter&Servlet等需要在web.xml中配置  -->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <!--filter如何知道要把字符设置成什么编码  -->
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <!-- 告诉filter编码方式 -->
        <!--配置一个filter的初始化参数
        使用给定的编码解决请求乱码
         -->
        <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>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

原创粉丝点击