jsp写入数据库乱码问题!!!!
小弟是JSP初学者。写了一段写数据库的程序代码如下:
<%@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*,java.io.*"%>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<body>
<center>
添加数据<hr>
<%
try
{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Connection con=java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/myjsp?user=root&password=123&useUnicode=true&characterEncoding=gb2312");
PreparedStatement pstmt=con.prepareStatement("insert into mydb (name,title,email,content,datetimes) values (?,?,?,?,?)");
pstmt.setString(1,"王小华");
pstmt.setString(2,"介绍");
pstmt.setString(3,"hehe@163.com");
pstmt.setString(4,"hello!");
pstmt.setDate(5,new java.sql.Date(new java.util.Date().getTime()));
pstmt.execute();
pstmt.close();
Statement stmt=con.createStatement();
stmt.execute("insert into mydb (name,title,email,content,datetimes) values ('小华','message','haha@sina.com','hello world!',now())");
out.println("添加数据成功!");
stmt.close();
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
%>
</center>
</body>
</html>
我用的是MYSQL数据库,运行完程序后数据库中值是汉字的字段都出现了“?”号,有没有办法解决?
谢各位大侠!!!
问题点数:100、回复次数:11Top
1 楼skycncomp(闭关修练到年底)回复于 2005-12-16 09:55:53 得分 0
charset设成gbk试试
mysql是什么版本的?Top
2 楼xu51mm(xumin)回复于 2005-12-16 10:04:14 得分 0
加上:
<%request.setCharacterEncoding("gb2312");%>Top
3 楼masse(当午 http://blog.sina.com.cn/xukf)回复于 2005-12-16 10:07:13 得分 30
安装mysql的时候,编码选择GBK或者utf-8
链接的时候加上charsetEncoding=gbk或者utf-8Top
4 楼java_ak47(精通EJB)回复于 2005-12-16 10:07:34 得分 0
<%request.setCharacterEncoding("GBK");%>的字符集大一些Top
5 楼masse(当午 http://blog.sina.com.cn/xukf)回复于 2005-12-16 10:07:50 得分 0
另外,有可能是你的console不支持中文
你用程序读出来试试,Top
6 楼masse(当午 http://blog.sina.com.cn/xukf)回复于 2005-12-16 10:08:38 得分 0
GBK的字符集大?
能大过utf-8么,晕Top
7 楼QWERT520(痛苦并快乐着)回复于 2005-12-16 10:09:10 得分 30
1,首先,我修改了xml文件的编码方式,改为“GBK”编码格式的xml;
<?xml version="1.0" encoding="GBK"?>
2, 在访问数据库的配置文件中,访问mysql的url 参数修改为:useUnicode=true&characterEncoding=GBK;
3,在我的Pageconfig的类修改取xml的xml.getBytes("ISO8859-1"));
InputStream st = new ByteArrayInputStream(xml.getBytes("ISO8859-1"));
这个我先前也曾经尝试过,但没有匹配成功;
4,需要修改mysql数据库的默认编码:
default-character-set=GBK
default-collation=GBK
Top
8 楼quartz_word(八楼蚊子)回复于 2005-12-16 10:09:25 得分 0
我的数据库是4.1.13的。
谢谢两位大侠。可是还是不好用。
Top
9 楼quartz_word(八楼蚊子)回复于 2005-12-16 10:12:55 得分 0
谢谢各位,我再试试。Top
10 楼cwill(休息一下)回复于 2005-12-16 10:27:42 得分 40
呵呵使用
MySQL-Front 把MySQL的你使用的数据库,和所建的表的编码都改成GBK就好了
超强力推荐mysql管理软件MySQL-Front
至于数据库连接
jdbc:mysql://localhost:3306/DBName?characterEncoding=GBK
就完全ok了 不过我用过的是5.0 而且用了连接池,对了MySQL的JDBC驱动版本不能太老
还有像你这样执行了一条以上语句的情况一定要用JDBC的事务处理,如果执行出错就要
rollback 否则稍微大型点的系统你就等着用户把你电话打爆吧
Top
11 楼quartz_word(八楼蚊子)回复于 2005-12-16 12:06:06 得分 0
我重新装了一下数据库,并把字符集设置UTF-8,gbk我都试过了。现在我从数据库中读出的数据正常了,可是在MYSQL下看到的表中的数据还是“?”这是什么原因?Top




