請認真看完,以下這篇文章基本上能夠解決大家關於MySQL數據庫插入中文的問題了
1、首先我們查看mysql數據庫服務器,客戶端,數據庫連接,文件系統等的字符編碼
show variables like '%char%';
+--------------------------+-------------------------------------+------
| Variable_name | Value |......
+--------------------------+-------------------------------------+------
| character_set_client | utf8 |...... -- 客戶端字符集
| character_set_connection | utf8 |......
| character_set_database | latin1|...... -- 數據庫字符集
| character_set_filesystem | binary |......
| character_set_results | utf8 |......
| character_set_server | latin1|...... -- 服務器字符集
| character_set_system | utf8 |......
| character_sets_dir | D:\MySQL Server 5.0\share\charsets\ |......
+--------------------------+-------------------------------------+------
默認安裝完mysql數據庫時,服務器和數據庫使用的編碼是latinn1編碼格式。
2、查看數據庫的創建語句。以默認的數據庫mysql為例
show create database mysql
可以發現其的default character set默認字符編碼格式是latin1。由此可以看出,缺省時會自動使用latin1
所以我們需要在創建數據庫時指定默認的編碼格式
create database 數據庫名 CHARACTER SET utf8 COLLATE utf8_general_ci;
修改已創建的數據庫的編碼
alter database 數據庫表名 CHARACTER SET utf8 COLLATE utf8_general_ci;
3、查看數據庫中匹配到的表的編碼格式。
show table status from 數據庫名 like 'pattern/匹配模式';
查看數據庫中所有表的編碼格式
show table status from mysql like '%%';
4、修改表的默認編碼格式。有兩種方法
alter table 表名 character set utf8 COLLATE utf8_general_ci;
alter table 表名 convert to character set utf8;
第一種是僅僅修改表的字符編碼,而字段的字符編碼還是latin1編碼格式,這種改變沒有意義!!!
***可以查看數據表中所有列的字符編碼,就可以發現字段的字符編碼是否發生改變。show full columns from 表名;
第二種會將表和字段的編碼都更改為utf8編碼格式。
5、中文亂碼問題得到解決的,但是數據庫里那么多表,我們總不可能一個表一個表的進行修改吧,所以我們要使用存儲過程,
加動態sql語句的方式使用循環自動修改數據庫內的所有數據表的編碼格式。
注意:如果修改完后中文存儲還是亂碼。將連接數據庫的連接后面指定編碼格式為utf8