JSP response,request中文乱码(出现问号)总结

java中request乱码是浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码,response乱码是服务器向浏览器发送的数据包含中文字符,浏览器中显示的是乱码。其实产生中文乱码的原因就是客户端和服务器所使用的编码不同。

1. response中文乱码

服务器发给浏览器的数据默认是按照ISO-8859-1编码,浏览器接收到数据后按照默认的字符集进行解码后显示,如果浏览器的默认解码字符集不是ISO-8859-1,就出现乱码。解决方法如下:

a. 设置服务器端的编码

response.setCharacterEncoding('utf-8”); 

b. 通知浏览器服务器发送的数据格式

response.setContentType('text/html;charset=utf-8”);

c. jsp页面通知浏览器展示的编码格式

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

只要服务端,发送端和浏览器端的编码一致就不会出现乱码,一般有中文的都用UTF-8或者GB2312编码。

2. request中文乱码

地址栏直接输入URL访问浏览器默认将参数按照utf-8进行编码;点击页面中的超链接访问和提交表单访问浏览器将参数按照当前页面的显示编码进行编码。

解决方法如下:

1. 不管是get请求还是post请求,将中文参数进行url编码,用URLEncoder.encode()进行编码传到后台

2. 设置pageEncoding=“utf-8”

3. 后台接收编码也用 utf-8

4. web.xml设置编码

<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>  
<filter-mapping>  
    <filter-name>encodingFilter</filter-name>  
    <url-pattern>/*</url-pattern>  
</filter-mapping>


当然在用Eclipse进行开发的时候,一定要优先设置jsp文件的编码,默认的不是utf-8编码,如果不修改会导致jsp文件中文乱码,修改步骤如下:

1. Eclipse-->windows->preference->General->Content Types-->右侧的Content Type中选中 Text->JSP 将默认编码改为"utf-8"

2. Eclipse-->windows->preference->General->Workspace-> Text file encoding 改为 “UTF-8”

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。