为这个问题已经快超级郁闷了,真的很希望有人能帮帮我............
以下我把问题说的详细点,可能字数挺多,其实问题很简单..
原本我用连接池的,经过两天的测试,也用了直接连接数据库的方法,不过测试结果是一样的
环境:
Tomcat5.5.17 
mysql5.0(用可视化工具mysql-front)
jdk1.5 
mysql-connector-java-5.0.4-bin.jar(原本用mysql-connector-java-3.1.8-bin.jar,后来我以为是驱动有问题所以改了,不过结果还是一样的)
问题的结果: doc环境下插入中文数据,用front显示正常; 网页中insert插入中文数据乱码(在front中显示),取出正常(这里取出的是已经在doc中插入好的数据).
以下为我网页中的代码:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%
Connection conn=null;
String sql=null;
String sql2=null;
Statement stmt=null;
ResultSet rs=null;
String title=null;
String URL=null;
Class.forName("org.gjt.mm.mysql.Driver");
conn=DriverManager.getConnection("jdbc:mysql:///haxinbbs","root","*****");
stmt=conn.createStatement();
String str1="哈哈";
String str2="www.sina.com";
//插入数据
sql="insert into baseinfo values('"+str1+"','"+str2+"')";
stmt.executeUpdate(sql);
//取出数据
sql2="select * from baseinfo";
rs=stmt.executeQuery(sql2);
while(rs.next())
{
title=rs.getString("title");
URL=rs.getString("URL");
out.print(title+" "+URL+"   ");
}
rs.close();
stmt.close();
conn.close();
%>
在线等待............

解决方案 »

  1.   

    就是编码集的问题,你用utf8试试
      

  2.   

    jdbc:mysql://localhost:3306/livedb?useUnicode=true&characterEncoding=GBK
    指定编码链接数据库!
      

  3.   

    <%request.setCharacterEncoding("gb2312");%>
    你的jsp头上要加上上面一段
    另外:utf-8 front支持不好
    就用gb2312
    关键是在你的mysql没有配置好编码。重新配置mysql的编码为gb2312
    点开“MySQL Server Instance Config Wizard”,注意一步一步的看,你能看到有个默认的下拉列表值为“latin1”的,把它改为gb2312
      

  4.   

    <%@ page contentType="text/html; charset=GBK"%>你用这个试试。不行,我建议你mysql数据库重装下,再选数据库字符集时选gbk。mysql的中文解决了。我的是mysql5.0.24的版本的。没有字符集的问题。数据库链接字符串也不用改。
      

  5.   

    jdbc:mysql://localhost:3306/livedb?useUnicode=true&characterEncoding=GBK
      

  6.   

    问题解决了一部分,就是二楼和四楼说的,很简单,加上这个就没事了,不过是在直接连接数据库的时候加上这段才行,也就是我上面给出的代码.
    不过现在我想用连接池连接数据库,问题又来了,useUnicode=true&characterEncoding=GBK这段代码应该加到哪呢?
    以下是我连接池server.xml中<GlobalNamingResources>下的加的代码:
    <Resource name="Test" 
            type="javax.sql.DataSource" 
            driverClassName="com.mysql.jdbc.Driver" 
            password="ycharryzyp"
            maxIdle="2" 
            maxWait="5000" 
            username="root" 
            url="jdbc:mysql://localhost:3306/haxinbbs" 
            maxActive="4"/>
    我试了在url后加,即
    url="jdbc:mysql://localhost:3306/haxinbbs?useUnicode=true&characterEncoding=GBK"
    但这样的话tomcat启动不了,不加这段tomcat和连接池运行都很正常(除乱码外)
    所以我又想在网页中加,我网页原本代码如下:
    <%@ page contentType="text/html; charset=GBK"%>
    <%@ page import="java.sql.*,javax.sql.DataSource,javax.naming.*"%>
    <%
    try
    {
          Context initCtx =new InitialContext();
          DataSource ds = (DataSource)initCtx.lookup("java:comp/env/Test");
          Connection conn = ds.getConnection();
          Statement stmt=conn.createStatement();
          //插入数据
          String str1="呵呵";
          String str2="zyp";
          String sqlInsert="insert into baseinfo values('"+str1+"','"+str1+"')";
          stmt.executeUpdate(sqlInsert);
          //取出数据
          Statement stmt2=conn.createStatement();
          ResultSet rs =stmt2.executeQuery("select * from baseinfo");
          while(rs.next())
          {
          out.println(rs.getString("title")+"&nbsp;&nbsp;"+rs.getString("URL")+"<br>");
          }
        //关闭连接(略)
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    %>
    此时的运行结果为 ??  ??
    于是我想在lookup方法后加,即为:
    DataSource ds = (DataSource)initCtx.lookup("java:comp/env/Test?useUnicode=true&characterEncoding=GBK");
    但这样网页输出一片空白,用front也没看到有任何数据,而且tomcat服务器出现大量异常以上是我用连接池时遇到的详细情况
    两个字,等待..............
      

  7.   

    你这样配数据源:也是在server.xml中
    <Resource name="Test" auth="harryzyp" type="javax.sql.DataSource"/><resourceParams name="Test">
     <parameter>
       <name>factory</name>
       <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter><parameter>
       <name>maxActive</name>
       <value>100</value>
    </parameter><parameter>
       <name>maxIdle</name>
       <value>30</value>
    </parameter><parameter>
       <name>maxWait</name>
       <value>10000</value>
    </parameter><parameter>
       <name>username</name>
       <value>user</value>
    </parameter><parameter>
       <name>password</name>
       <value>password</value>
    </parameter><parameter>
       <name>driverClassName</name>
       <value>com.mysql.jdbc.Driver</value>
    </parameter><parameter>
       <name>url</name>
       <value>jdbc:mysql://localhost:3306/Test?autoReconnect=true&useUnicode=true&characterEncoding=GBK</value>
    </parameter></resourceParams>
      

  8.   

    加了这个<%request.setCharacterEncoding("gb2312");%>就不需要加那个的,试了吗搂主?
      

  9.   

    harryzyp() 你在server.xml写的:我试了在url后加,即
    url="jdbc:mysql://localhost:3306/haxinbbs?useUnicode=true&characterEncoding=GBK" 写错了,改为url="jdbc:mysql://localhost:3306/haxinbbs?characterEncoding=GBK" 先去试试看。不行在来问,我保证给你解决掉
      

  10.   

    现在已经解决了.....
    哈哈............
    我用的是hdhmail2000(禅剑飞雪)加<%request.setCharacterEncoding("gb2312");%>的方法,不过加上这个之后,运行正常,然后我把这个去掉,运行还是正常,真是晕,这东西也有点莫名其妙啊,我真怀疑5.0的是不是有漏洞..........以前我用过4.0的,一点都没事,用的好好的不过在这真的感觉大家都是一家人一样啊,什么问题拿上来肯定有人帮助解决,不管您有没有帮到我,在这我都很感谢每一位对我的关注....谢谢大家........