MySQL 伺服器內建預設字元集和校對。若要變更這些預設值,請在啟動伺服器時使用 --character-set-server
和 --collation-server
選項。請參閱第 7.1.7 節,「伺服器命令選項」。校對必須是預設字元集的合法校對。若要判斷每個字元集有哪些可用的校對,請使用 SHOW COLLATION
陳述式或查詢 INFORMATION_SCHEMA
COLLATIONS
資料表。
如果您嘗試使用未編譯到二進位檔中的字元集,可能會遇到下列問題
如果您的程式使用不正確的路徑來判斷字元集的儲存位置 (通常是 MySQL 安裝目錄下的
share/mysql/charsets
或share/charsets
目錄),可以使用執行程式時的--character-sets-dir
選項來修正此問題。例如,若要指定 MySQL 用戶端程式使用的目錄,請將其列在選項檔的[client]
群組中。這裡給出的範例分別顯示 Unix 或 Windows 的設定外觀[client] character-sets-dir=/usr/local/mysql/share/mysql/charsets [client] character-sets-dir="C:/Program Files/MySQL/MySQL Server 8.4/share/charsets"
如果字元集是無法動態載入的複雜字元集,您必須重新編譯程式,使其支援該字元集。
對於 Unicode 字元集,您可以使用 LDML 標記法來定義校對,而無需重新編譯。請參閱第 12.14.4 節,「將 UCA 校對新增至 Unicode 字元集」。
如果字元集是動態字元集,但您沒有它的組態檔,您應該從新的 MySQL 發行版本安裝該字元集的組態檔。
如果您的字元集索引檔 (
Index.xml
) 不包含字元集的名稱,您的程式會顯示錯誤訊息Character set 'charset_name' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
若要解決此問題,您應該取得新的索引檔或手動將任何遺失的字元集名稱新增至目前的檔案。
您可以強制用戶端程式使用特定字元集,如下所示
[client]
default-character-set=charset_name
這通常是不必要的。不過,當 character_set_system
與 character_set_server
或 character_set_client
不同時,如果您手動輸入字元 (作為資料庫物件識別碼、資料行值或兩者),這些字元可能會在用戶端的輸出中顯示不正確,或者輸出本身可能格式不正確。在這種情況下,使用 --default-character-set=
啟動 mysql 用戶端 (亦即,設定用戶端字元集以符合系統字元集) 應該可以修正此問題。system_character_set