Web中的中文乱码问题

从4个方面讨论web中的乱码问题:

JSP页面中文乱码

修改JSP页面的编码为utf-8

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

Get参数中文乱码(最常见,问的最多的情况)

首先确保页面中中文不是乱码,如果在地址栏中访问地址中的中文参数可以正常显示,后台接收到的确实乱码。那就是tomcat对URL编码的问题。解决思路:在tomcat的config文件夹下的server.xml中找到自己定义的端口号的位置(一般配置使用http协议的connector),在里面加入URIEncoding="utf-8"或者URLEncoding="utf-8"

server.xml部分代码如下:

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" urlencoding="utf-8"/>

这种情况比较容易忽略,尤其是大家在刚下载tomcat后,tomcat中可能没有配置url编码,碰到乱码问题一直以为是自己程序哪里写的不对的问题。因此比较容易忽视。

Post参数中文乱码

这种问题是在使用Post传递参数时,后台接收到了乱码数据。

我们一般使用Spring的编码过滤器解决:在web.xml中配置filter

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

返回数据中文乱码

这主要是Response的编码问题

解决方案:设置Response的编码格式

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


你可能感兴趣的:(jsp乱码,get参数乱码,response乱码,post参数乱码)