今天写代码时发现中文存入mysql乱码了。mysql
个人数据持久化框架用的Hibernate。首先我确认JSP页面传入后台的中文数据没有乱码,所以我确信是中文数据在存储时出了问题。网上查阅资料,许多人说能够在hibernate的配置文件中加入:sql
<property name="connection.characterEncoding">utf-8</property>
加了这句后仍是不行。继续查资料....。而后,我忽然想到多是我建数据库时没有指定编码,数据使用的的是mysql的默认编码(而mysql的默认编码是安装时决定的) 。因而我将现有的数据库删除(小工程,删除了没关系),从新建库,建库时指定编码数据库
create database `db_photodisplay` default character set utf8 collate utf8_general_ci;
建库后,从新建表。运行工程,出现了新的错误:框架
Data truncation: Data too long for column 'rolename' at row 1编码
继续百度这个错误,百度上有人说,建表时加上engine=innodb default character set=utf8就行了。hibernate
因而我又删除了表,在建表时加上engine=innodb default character set=utf8code
CREATE TABLE `role_info` ( `id` bigint(20) NOT NULL, `rolename` varchar(50) NOT NULL, PRIMARY KEY (`id`) )engine=innodb default character set=utf8
从新运行工程,发现中文数据成功存入数据库,没有乱码。xml