平台tomcat6.0,mysql5.1
这样子插入中文显示正常
    try{
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/tidos?useUnicode=true&characterEncoding=GBK","root","");
    PreparedStatement st=con.prepareStatement("insert into message values(?,?,?,?,?)");
    st.setString(1,"中文");
    st.execute();
    st.close();
    con.close();
    }catch(Exception e)
    {
    System.err.println(e);
    }
----------------------------------------------------------
我的javabean:
public class GetCon {
private SetBean sb;
private Connection con;
public GetCon(){
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
//"jdbc:mysql://localhost:3306/tidos","root",""
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/tidos?useUnicode=true&characterEncoding=GBK","root","");
}catch(Exception e)
{
System.err.println(e);
}
}
public void setSB(SetBean s)
{
sb=s;
}
public SetBean getSB()
{
return sb;
}
public void addMessage()throws Exception
{
Statement ss=con.createStatement();
PreparedStatement st=con.prepareStatement("insert into message values(?,?,?,?,?)");
st.setString(1,sb.getTitle());
st.setString(2,sb.getName());
st.setString(3,sb.getEmail());
st.setString(4,sb.getContent());
st.setDate(5,new java.sql.Date(new java.util.Date().getTime()));
st.execute();
//st.close();
con.close();
}
}
用到bean的jsp:
<%@page language="java" import="java.util.*,java.sql.*,dd.SetBean" %>
  <jsp:useBean id="set" class="dd.SetBean" scope="page">
  <jsp:setProperty name="setbean" property="*"/>
  </jsp:useBean>
  <jsp:useBean id="con" class="dd.GetCon"/>
  <body>
 <% 
 try{ 
 con.setSB(set);  
 con.addMessage(); 
 } 
 catch(Exception e) 
 { 
 e.printStackTrace(); 
 } 
 %>
  </body>
但是这样插入就出现乱码,哪位知道请帮帮我.非常感谢.

解决方案 »

  1.   

    楼主有用过滤器么?
    JSP向JAVA传数据时一般需要进行 中文处理 因为编码格式不一致
      

  2.   

    我也遇到相似的问题 
    可能是你MYSQL的版本的问题,我的版本是:mysql-essential-5.0.22-win32
    可能是你在安装MYSQL的时候没有选对字符编码格式;再不行你可以转换字符
    new String(temp.getBytes("ISO8859-1"))  从数据库读数据到网页
    new String(title1.getBytes("GB2312"),"ISO8859-1")从网页向数据库写数据
      

  3.   

    public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) 
                throws IOException,ServletException{ 
      System.out.println("过滤器执行前"); 
      request.setCharacterEncoding("GB2312") ;  //在request.getParameter("name")之前转码,根据你的机器设置编码GB2312  reponse.setCharacterEncoding("GB2312"); 
      String name=request.getParameter("name"); 
      if(name!=null){ 
          System.out.println(name); 
      } 
      chain.doFilter(request,response); 
      System.out.println("过滤器执行后");          
      } 

      

  4.   

    另外根据提交方式不同,转码方式也不同 
    提交的两种方式,GET和POST 
        1.记住超链接是GET方式提交 
        2.POST方式提交可以统一转码(这样获得的参数可以统一转码) ,也就是说你可以用过滤器来统一转码 
                例:request.setCharacterEncoding("UTF-8");  //如果你用的编码方式是GBK就写GBK,要写在获得参数的前面 
                  String name=request.getParameter("name"); 
                  System.out.println(name);  //可以转过来,必须是POST提交 
        3.GET方式不能用统一转码 
                但可以这样做: 
                  String name=request.getParameter("name"); 
                  name=new String(name.getBytes("ISO-8859-1"),"UTF-8");    //这种也叫重新赋值的方式 
                    System.out.println(name); 
                但这样做也带来很多不便,假如你有很多request.getParameter("something");  你必须一一转码. 
        4.GET方式还有一种配置可以在Tomcat下配置URIEncoding=UTF-8 
      

  5.   

    我也遇到过,就是mysql安装的问题.