新闻正文

MYSQL数据库中文问题小结

来源:JAVA天堂  JAVA学习者  2007-10-22 23:11:20 网友评论 0 条 字体:[ ] ~我要投稿!
最近做毕业设计的时候,用了mysql5+tomcat5.5+jsp+servlet
用了数据库连接池,出现中文问题的原因倒不是它,都一样的,
发现插入数据是中文的时候就插不进去,tomcat后台大概都是这个错误
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 't
opic' at row 1
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2868)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
        at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedSt
atement.java:1169)
        at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPrepared
Statement.java:693)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java
:1404)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java

:1318)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java
在网上搜了好多方法,自己都调不大起来,今天小试了下,OK了
把主要过程记下
我的系统是xp的默认字符肯定是GB2312吧,我也没改系统的东西,
改了MYSQL的一些东西,就是Mysql的字符吧,安装的时候有选字符集
default character set的时候选择best support for Multilinggualism 这样处理后反正我看到
在my.ini的配置文件里默认字符都utf-8的
连接数据库的URL 后面也没有跟setcharacter之类的,只有数据库的名字。
servlet里面接收变量的时候也没有getBytes这样的处理,直接
String subject = request.getParameter("subject");
我看到关键好象是在JSP页面上应该声明
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
还有一个关键是用PrepareStatement的话,
dbc.prepareStatement("insert into news(topic,body,adddate,adduser,rootid,pic ) values(?,?,?,?,?,? )");


   dbc.setBytes(1,topic.getBytes("ISO-8859-1"));
记住这里需要转,也不能换成gb2312
改成gb2312就会出现上面的错误
我不太清楚原理,希望知道的人指定!

收藏到ViVi   收藏此页到365Key
上一篇:Spring学习笔记
下一篇:学习JSF的理由
用户名:新注册) 密码: 匿名评论 [所有评论]
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
本栏搜索
  • Google
   网站首页 -  网站地图 -  技术学习 -  网站投稿 -  帮助中心
Copyright 2003-2008 www.javah.net All Rights Reserved
2008 如果你喜欢本站 请收藏本站 并推荐给你的朋友一起分享