数据库是mysql编码是:GB2312JSP页面编码设置:
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">JSP和数据库显示插入的中文都是乱码,应该是JSP页面的问题,已经上网找了好几天了,都不能解决,求大虾指点!
(数据库GB2312和JSP的GBK没冲突,已经过同学实验!无乱码)

解决方案 »

  1.   

    在插入数据库之前用函数进行转码public static String codeToString(String str){
    String s=str;
    try{
    byte tempB[]=s.getBytes("ISO-8859-1");
    s=new String(tempB);
    return s;
    }catch(Exception e){
    return s;
    }
    }
      

  2.   

    请问你提交的方式是“get”还是“post”?
      

  3.   

    可以用写一个中文的过滤器:
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    // TODO Auto-generated method stub
    HttpServletRequest req=(HttpServletRequest)request;
    if("get".equalsIgnoreCase(req.getMethod())){

    Map map=req.getParameterMap();
    for (Iterator itr=map.values().iterator();itr.hasNext();){
    String[] param=(String[])itr.next();
    for (int i=0;i<param.length;i++){
    param[i]=new String(param[i].getBytes("ISO-8859-1"),"UTF-8");
    }

    }

    }else{
    req.setCharacterEncoding("UTF-8");
    }
    response.setContentType("text/html;charset=UTF-8");

    chain.doFilter(request, response);
    }
      

  4.   

    这种方法基本上是必杀
    PS:如果你是用Tomcat的话 估计还要修改Tomcat的编码格式
      

  5.   

    修改tomcat的编码格式
    在conf下的server.xml
    加上一句话: Encoding ="GBK"
      

  6.   

    public class ToChinese
    {
        public String trans(String str)
        {
    if(str==null)
    {
        str="";
    }
    else
    {
        try
        {
    str=(new String(str.getBytes("iso-8859-1"),"GB2312")).trim();
        }
        catch(Exception e)
        {
    e.printStackTrace(System.err);
        }
    }
    return str; 
        }
    }
      

  7.   

    mysql 要是 gbk  
      

  8.   

    用这个试试,我以前也是,但后来就用这个解决的。
    把tomcat中WEB-INF\classes\filters\下的几个文件拷到你站点相应目录下,
    在web.xml中加入
    <filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>utf-8</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
      

  9.   

    在你的servlet里的处理方法前加上 request.setCharacterEncoding("UTF-8");
      

  10.   

    1:写一个过滤器类
    2:如用到TOMCAT容器
    server.xml
    加上一句话: Encoding ="GBK"
      

  11.   

    一、直接用plsql插入些数据,然后从页面取出,如果不会乱码,则说明是你从页面插入数据到数据库的时候编码问题,你只要从页面取过来的时候字符串转码一下,再存到数据库中就ok
    二、如果一不行,你从数据库中取出来的数据转码
      

  12.   

    首先将你的jsp页面和数据库编码统一,然后再项目中添加一个过滤器。做完这些,你就要测试一下前台传到后台的数据中文能不能正常显示。如果能这证明是数据库那段有问题,解决办法是:在连接mysql数据库是在url后面添加useUnicode=true&characterEncoding=GB2312.
    如果是前台有问题,那就要修改了最好将表单的提交方式设置为post方式