Mac IDEA MySQL數(shù)據(jù)庫(kù)插入中文亂碼

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。

IDEA配置UTF8編碼格式.png

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ù)庫(kù)編碼格式.png

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

設(shè)置表字段的編碼格式.png

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

Navicat連接數(shù)據(jù)庫(kù)時(shí)的編碼格式.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容