MySQL中文亂碼

      在〈MySQL中文亂碼〉中尚無留言

亂碼總類

中文亂碼可以分為如下幾種

1. 資料庫使用中文名稱
2. 資料表使用中文名稱
3. 欄位使用中文名稱
4. 資料錄有中文資料

資料庫使用中文

很多人喜愛使用中文來命名資料庫. 在MySQL裏, 一個資料庫會使用1~3個檔案來儲存. 所以用中文命名資料庫, 則其檔名是中文. 在Windows系統中, 若my.ini 裏的 datadir 在沒有變更的情形下, 打開檔案總管查看 C:\ProgramData\MySQL\MySQL Server 8.0\Data目錄, 就會有一個檔名類似為 “@7acb@5411@71df@9020”  的檔案. 其中@7acb代表一個中文字, 這就是中文系統的big5編碼.

不論是Win7或是Win10, 在繁体中文系統下, 檔案名稱皆使用 big5編碼. 而MySQL就會很雞婆的把檔名使用big5來代替.

一開始使用MySQL時, 是可以很順利的操作. 但若想要把資料庫備份出來, 必需使用如下指令

mysqldump -u account -p --routines --default-character-set=big5 db > db.sql

上面的default-character-set=big5是指定備份的中文檔案名為 big5.

這下問題又來了, 資料表或是其中的欄位也是中文的話, MySQL系統卻使用 utf8, 而且是不可變更的. 所以會造成備份到一半就發生錯誤. 如果把 default-character-set改成 utf8, 則中文資料庫又找不到而無法備份了.

所以, 資料庫名稱, 絕對不可以使用中文

資料表, 欄位, 資料錄使用中文

資料表, 欄位, 資料錄的字元設定, 就交由MySQL來負責了. 所以只要在開啟資料庫時, 把字元碼設定為 utf8/utf8-unicode-ci及可

更改my.ini

許多教學都說, 可以設定my.ini裏的[mysql]/[mysqld] , 加入 default-character-set=utf8, 自已試試就知道, 這些都是沒用的

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *