首页 > 代码库 > 解决Web工程乱码问题
解决Web工程乱码问题
1.servlet跳转到jsp页面
在JSP中涉及到使用Servlet进行一些逻辑处理 处理完后进行页面跳转 如在Servlet中进行的request.getRequestDispatcher("index.jsp").forward(request, response); 这样的跳转 可是有时候我们在跳转的时候 会遇到中文乱码的问题 就算是同一个页面 你进行过一些处理后调回本页面 也可能遇到这样的情况 也许你会说你没有啊 因为出现这种情况是你的Servlet中存在这样的语句:PrintWriter out = response.getWriter(); 也许你也有设置他的字符集 可是正确的解决方法是:
在PrintWriter out = response.getWriter();之前设置他的字符集,如:response.setCharacterEncoding("GBK");这样跳转的页面也就不会出现中文乱码了
2.servlet传到数据库产生的乱码问题
(1)建立一个字符串转换类,如下所示
import java.io.UnsupportedEncodingException;
public class StringTo {
public static String ConvertoCN(String str)
{
byte[] bs;
String str1 = null ;
try {
bs = str.getBytes("ISO-8859-1");
str1 = new String(bs,"utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str1;
}
}
然后把request.getParameter("name")等类似的改为
StringTo.ConvertoCN(request.getParameter("name"));问题解决
3.jsp中的乱码问题(分三步)
(1)统一格式,我选的是UTF-8
(2)选择window->prerences->general->workspace->other改为UTF-8
(3)另外jsp中也要统一格式,因为我选的是UTF-8
代码如下所示
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
对于jsp中已造成乱码的问题自己手动改正
(4)自己写一个filter过滤器
(5)
数据库乱码(mysql)
统一数据库和工程编码格式
conn=DriverManager.getConnection("jdbc:MySQL://localhost:3306/test?useUnicode=true&&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull","root","123");