今天寫代碼時發現中文存入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