站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题真诚求救,只有30分了,mysql中文乱码---整了我两天了

真诚求救,只有30分了,mysql中文乱码---整了我两天了

摘要: 真诚求救,只有30分了,mysql中文乱码---整了我两天了


为这个问题已经快超级郁闷了,真的很希望有人能帮帮我............
以下我把问题说的详细点,可能字数挺多,其实问题很简单..
原本我用连接池的,经过两天的测试,也用了直接连接数据库的方法,不过测试结果是一样的
环境:
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();
%>
在线等待............


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


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


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



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



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


问题解决了一部分,就是二楼和四楼说的,很简单,加上这个就没事了,不过是在直接连接数据库的时候加上这段才行,也就是我上面给出的代码.
不过现在我想用连接池连接数据库,问题又来了,useUnicode=true&characterEncoding=GBK这段代码应该加到哪呢?
以下是我连接池server.xml中下的加的代码:
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")+"
");
}
//关闭连接(略)
}
catch(Exception e)
{
e.printStackTrace();
}
%>
此时的运行结果为 ?? ??
于是我想在lookup方法后加,即为:
DataSource ds = (DataSource)initCtx.lookup("java:comp/env/Test?useUnicode=true&characterEncoding=GBK");
但这样网页输出一片空白,用front也没看到有任何数据,而且tomcat服务器出现大量异常

以上是我用连接池时遇到的详细情况
两个字,等待..............


你这样配数据源:也是在server.xml中




factory
org.apache.commons.dbcp.BasicDataSourceFactory



maxActive
100



maxIdle
30



maxWait
10000



username
user



password
password



driverClassName
com.mysql.jdbc.Driver



url
jdbc:mysql://localhost:3306/Test?autoReconnect=true&useUnicode=true&characterEncoding=GBK





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


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


现在已经解决了.....
哈哈............
我用的是hdhmail2000(禅剑飞雪)加<%request.setCharacterEncoding("gb2312");%>的方法,不过加上这个之后,运行正常,然后我把这个去掉,运行还是正常,真是晕,这东西也有点莫名其妙啊,我真怀疑5.0的是不是有漏洞..........以前我用过4.0的,一点都没事,用的好好的

不过在这真的感觉大家都是一家人一样啊,什么问题拿上来肯定有人帮助解决,不管您有没有帮到我,在这我都很感谢每一位对我的关注....

谢谢大家........

结贴


↑返回目录
前一篇: 关于JAVABEAN
后一篇: 关于strus+spring+hibernate中使用多个配置文件的问题!