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 9.0/share/charsets"
如果字元集是無法動態載入的複雜字元集,您必須重新編譯程式以支援該字元集。
對於 Unicode 字元集,您可以使用 LDML 標記法定義定序,而無需重新編譯。請參閱 第 12.14.4 節,「為 Unicode 字元集新增 UCA 定序」。
如果字元集是動態字元集,但您沒有它的設定檔,您應該從新的 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