Mac IDEA MySQL 插入中文亂碼
數(shù)據(jù)庫(kù)插入中文亂碼問(wèn)題,很大原因是由于數(shù)據(jù)庫(kù),SQL語(yǔ)句,以及編譯器使用的字符集格式不一致導(dǎo)致的,如果出現(xiàn)亂碼情況,我們可以首先排查編碼格式問(wèn)題,通過(guò)統(tǒng)一編碼格式,嘗試解決。
工程環(huán)境
- MacOS 10.12.4
- MySQL 5.7.18
- IntelliJ IDEA 2016.3.3
- Navicat Premium 11.2.13
設(shè)置 IDEA 編碼格式
打開(kāi)IDEA偏好設(shè)置,選擇文件編碼格式: IDEA -> Preferences -> Editor -> File Encodings(快捷鍵 command + ,),設(shè)置IDE以及Project的編碼方式為 UTF-8。

SQL語(yǔ)句設(shè)置連接數(shù)據(jù)庫(kù)字符集格式
在數(shù)據(jù)庫(kù)地址上顯示的聲明數(shù)據(jù)庫(kù)連接的字符集格式為UTF-8
jdbc:mysql://127.0.0.1:3306/數(shù)據(jù)庫(kù)名?useUnicode=true&characterEncoding=UTF-8
配置MySQL字符集格式
- 查看數(shù)據(jù)庫(kù)字符集格式
進(jìn)入MySQL命令行:
mysql -u root -p
Enter password:
執(zhí)行命令,查看字符集:
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 | /usr/local/mysql-5.7.18-macos10.12-x86_64/share/charsets/ |
+--------------------------+-----------------------------------------------------------+
8 rows in set (0.02 sec)
- 臨時(shí)修改字符集配置
通過(guò)SQL命令修改字符集格式:
set character_set_database=binary;
通過(guò)這種方式修改字符集后,每次重啟MySQL都將恢復(fù)默認(rèn)設(shè)置。
- 永久設(shè)置字符集格式
查找資料,全局配置字符集格式,可以將 /usr/local/mysql/support-files目錄下的my-default.cnf文件拷貝到/etc目錄下,并改名為my.cnf。
但是,我安裝的MySQL版本為5.7.18, /usr/local/mysql/support-files目錄下并沒(méi)有配置文件??梢栽谥暗陌姹局袕?fù)制一份my.cnf,拷貝到/etc目錄下,依然生效。
在my.cnf文件中,添加以下語(yǔ)句,設(shè)置字符集格式:
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
重啟MySQL。
關(guān)于.cnf 文件配置的說(shuō)明可以參考這篇文章:
MySQL的my.cnf文件(解決5.7.18下沒(méi)有my-default.cnf)
修改database、table、columns字符集格式
設(shè)置數(shù)據(jù)庫(kù)編碼格式

設(shè)置數(shù)據(jù)表字段的編碼格式

OK,到此所有相關(guān)的字符集格式都配置好了。
【問(wèn)題1】
滿懷欣喜的重新運(yùn)行工程,oh no,數(shù)據(jù)庫(kù)插入中文依然亂碼,崩潰中.....
繼續(xù)查資料!!!!
有朋友說(shuō),修改字符集格式后,需要重新建表,好吧,繼續(xù)奮斗,將數(shù)據(jù)庫(kù)以及所有的數(shù)據(jù)表重新建一遍,再次運(yùn)行工程,插入讀取中文終于正常了O(∩_∩)O~~。
【問(wèn)題2】
通過(guò)Navicat查看表數(shù)據(jù),中文依然是 ??
通過(guò)繼續(xù)查閱資料,這應(yīng)該是Navicat軟件的問(wèn)題。通過(guò)Navicat連接數(shù)據(jù)時(shí),Encoding需要選擇 Auto。
