Data truncation: Data too long for column 'name' at row 1
原因在于:建表的时候,表的编码和字段编码都是默认的latin1,设置为utf8后,问题解决。
创建表的时候 应该加上 default charset=utf8
1、set names utf8;
http://apps.hi.baidu.com/share/detail/21043055
2、找到My.ini,和修改data目录中相应数据库目录下的db.opt配置文件
default-character-set=gbk
default-collation=gbk_chinese_ci
http://hi.baidu.com/zhaofei299/blog/item/e290ff99b9b889096f068c0b.html
3、修改数据库编码
- 修改数据库编码,如果是数据库编码不正确: 可以在phpmyadmin 执行如下命令: ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是将test数据库的编码设为utf8
- 修改表的编码:ALTER TABLE `category` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin
以上命令就是将一个表category的编码改为utf8
- 修改字段的编码:
ALTER TABLE `test` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
以上命令就是将test表中 dd的字段编码改为utf8
4、 mysql5.0+myeclipse4.1+tomcat5.0 全部使用默认编码方式
1:插如数据到mysql中:
在页面上加入本页的编码方式
<%@ page contentType="text/html;charset=gb2312" %>
把你要插入的中文文字由gb2312转变为iso-8859
title = new String(title.getBytes("GB2312"), "ISO-8859-1");
***注意此页面千万别在数据库的URL后面加任何编码方式*****
conn = java.sql.DriverManager.getConnection ("jdbc:mysql://localhost/zqswork","root","root");
2:从mysql中读出数据到页面:
依然在页面上加如编码方式
<%@ page contentType="text/html;charset=gb2312" %>
把你要读出的中文由iso-8859转变为gb2312
<%username = new String(username.getBytes("ISO-8859-1"), "gb2312");%>
****注意此页面一定要在数据库url处加入编码方式(与上面相反)******
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/zqswork?useUnicode=true&characterEncoding=gb2312","root","root");
5、jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8