简介:鉴于网上东西太杂,无法快速的解决乱码问题,在这里有一些鄙人的解决办法(使用myeclipse 设置utf-8格式,网上说的都设置之后,还是乱码。)。
解决方案:
jsp编译成java文件的编码pageEncoding=“gb2312”:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="gb2312"%>
下面是常见的编码设置:
1. HTML中文编码转换
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
2. JSP中文编码转换
2.1. 针对Tomcat下动态内容的中文乱码问题,有以下几个解决办法:
//1. 在每个JSP文件的开头增加如下代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
//2. 设置编码参数:
request.setCharacterEncoding("UTF-8");
//3. 使用编码过滤器:
publicclass SetCharacterEncoding implements Filter
{
@Override
public void destroy() {}
@Override
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
//设置字符编码
request.setCharacterEncoding("UTF-8");
//将控制传到下一个过滤器,如果没有过滤器则传到被调用者
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {}
}
//4.修改Tomcat根目录中conf子目录下的server.xml文件,在中加入URIEncoding="UTF-8"
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
//5.如果是调用response.sendRedirect传递中文参数产生的乱码,如:response.sendRedirect("a.jsp?p=中文参数");
请修改成如:
<% //引入URLEncoder %><%@page import="java.net.URLEncoder"%>
<%String p = "中文参数";//对中文参数编码
p = URLEncoder.encode(p,"UTF-8");
response.sendRedirect("a.jsp?p=" + p);%>
以解决乱码问题。
如果方法4还不能解决某些超链接传参乱码问题,请使用方法5。
//6.JavaScript中如果出现URL传参乱码问题,如:
open("a.jsp?p=中文参数");
请修改成:
<script type="text/javascript">
function openWindow(){
var url = "a.jsp?p=中文参数";
url = encodeURI(url);
open(url);
}
</script>
<input type="button" value="JavaScript中文参数" onclick="openWindow();">
以解决乱码问题。JavaScript中的open方法打开浏览器窗口,传递参数,其本质也是URL传参。一般方法4就可以很好的解决中文参数乱码问题。如果方法4不生效,才考虑方法6。
3. 数据库乱码:
jdbc:mysql://localhost:3306/exam?useUnicode=true&characterEncoding=utf8;