免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1261 | 回复: 0
打印 上一主题 下一主题

about data too long for column [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-27 17:18 |只看该作者 |倒序浏览
调试了以下以前写的程序,最近忙,没时间调试。对于 MySQL5.0数据库全部采用GBK编码,对于工程也用GBK
在向数据库插入时候先是出现乱码。
用 request.setCharacterEncoding("GBK");获得中文提交。
对于tomcat5.0如果要直接提交中文 like:
xxx.jsp?str=中文
将出现乱码,这是因为get方法与post方法不一样。可以修改%tomcat_home%conf\server.xml
中的Connector模块,添加URIEncoding="gbk"
修改如下:
  
port="8080"为默认端口。
存入数据库中数据仍然为乱码,出现 data too long for column异常,我分配可是vchar(255),理论上能存储125个中文。google了一下有以下说法:
1.
修改my.ini文件,将
sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
注释掉,ok!
2.修改数据库编码为utf8,jsp,servlet编码转换为utf8存入
3.只知道是中文处理的问题,但不知道如何改.最好的方法是把字段定得长一些
4.以前我也遇到过类似的情况,我的建议:
在装数据库的时候把你的字符集设置为gb2312,然后你建表的时候,汉字默认都是gb2312
在连接数据库的时候不要写成characterEnconding=true&charset=gb2312,把这个去掉。
然后在连接的时候写stat.execute("set names gb2312");
最好用gbk,gb2312对某些不常见的字符会出现Data too long for column,比如“珺”字等,至于数据库,只有默认的字符集是gb2312或者gbk或者utf8都没什么问题
5。把mysql的字符集设为utf8(通过修改my.ini,把所有的latin1改为utf8)
并且通过show variables like '%char%';
试验了以上方法都失败了,没办法了,靠,既然是mysql的异常,换个驱动试验一下。在网上下了个MySQL的最新驱动。
从新加入到编译路径中。好用了。
有时还真的考虑一下是不是你自己的事,还是驱动的事。
继续修改程序bug,发现没有安全性。好办,在登录成功处理servlet中加入
HttpSession session = ((HttpServletRequest) request)
                            .getSession(true);
                    session.setAttribute("user", name);// 设置session;
在转入jsp中加入
ok,用session方便呵呵。
最好工程的所有文件编码与数据库编码相同哦。
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/19492/showart_311012.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP