確保數據庫數據表創建的編碼一致:
創建數據庫的時候:
CREATE DATABASE `Db`
CHARACTER SET 'utf8 '
COLLATE 'utf8_general_ci';
注:CHARACTER SET 'utf8 ':這是設置字符編碼;
COLLATE 'utf8_general_ci':設置字符排序編碼
可以通過命令行設置:alter table tableA character set utf8
建表的時候:
CREATE TABLE `TableA` ( `ID` varchar(40) NOT NULL default ' ',
`UserID` varchar(40) NOT NULL default ' ', ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
注:設置表的字符編碼 DEFAULT CHARSET=utf8
可以通過命令行設置:alter table tableA charset utf
設置URL的時候:
jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8
注:這裏useUnicode=true&characterEncoding=UTF-8這裏可以不用添加,默認useUnicode爲true
characterEncoding會自動檢測當前用的數據庫變而進行改變
2.上面的這些設置了可能會用錯誤,這需要修改mysql中my.ini配置文件
設置MySQL的默認字符集爲utf8,找到客戶端配置[client]在下面添加。
default-character-set=utf8
找到服務器配置[mysqld]在下面添加
default-character-set=utf8
設定MySQL數據庫以utf8編碼運行,連接MySQL數據庫時使用utf8編碼
停止和重新啓動MySQL
net stop mysql
net start mysql
注:找到服務器配置[mysqld]在下面添加:default-character-set=utf8這裏加入會導致數據庫無法啓動
單獨加入default-character-set=utf8即可
重新連接數據庫,查看編碼,數據表內容
mysql> show variables like 'character%';
--------------------------+-----------------------------------------------+
| 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:\wamp\bin\mysql\mysql5.5.20\share\charsets\
從上面可以看到,除了| character_set_database | latin1 和character_set_server | latin1 兩項爲latin1編碼其他都爲utf8編碼,這裏導致client和server的編碼不一致了,插入數據依然中文會亂碼
解決方法:
[mysqld]在下面添加:character_set_server=utf8,然後從新啓動
[mysqld]
port=3306
character_set_server=utf8
#default-character-set=utf8
使用如下命令
mysql> show variables like 'character%';
+--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | d:\wamp\bin\mysql\mysql5.5.20\share\charsets\ |
+--------------------------+-----------------------------------------------
這裏可以看到所有的編碼都一致了,就不會亂碼了
|
| f512ebc1-e587-4baf-bd17-42e27236621f | ??? | female | 2017-02-24 | 119 | [email protected] | ??,??,?java | VIP | ?? |
之前出入的中文亂。下面爲修改之後的結果
| ff1355cb-b25c-4431-8f96-7f56875b582f | 劉備 | female | 2017-02-24 | 119 | [email protected] | 吃飯,睡覺,學java | VIP | 美女 |
在命令提示中默認爲gbk編碼,要想不亂碼顯示,在使用查詢語句時使用set names gbk