MySQL 字符集:字符集配置

来自Wikioe
跳到导航 跳到搜索


MySQL 服务器具有内置的默认字符集和排序规则。要更改这些默认值,请在启动服务器时使用“--character-set-server”和“--collation-server”选项。

  • 该排序规则必须是默认字符集的合法排序规则。
  • 若要确定每个字符集可用的排序规则,请使用“SHOW COLLATION”语句或查询“INFORMATION_SCHEMA”的“COLLATIONS”表。


如果您尝试使用未编译到二进制文件中的字符集,则可能会遇到以下问题:

  • 如果您的程序使用错误的路径来确定字符集的存储位置(通常是 MySQL 安装目录下的“share/mysql/charsets”或“share/charsets”目录),则可以在运行程序时使用“--character-sets-dir”选项来解决此问题。
    例如,要指定 MySQLClient 端程序要使用的目录,请在配置文件的“[client]”组中列出该目录。此处给出的示例分别显示了 Unix 或 Windows 的设置:
    [client]
    character-sets-dir=/usr/local/mysql/share/mysql/charsets
    
    [client]
    character-sets-dir="C:/Program Files/MySQL/MySQL Server 5.7/share/charsets"
    
  • 如果字符集是无法动态加载的复杂字符集,则必须在支持该字符集的情况下重新编译程序。
  • 如果字符集是动态字符集,但是您没有针对它的配置文件,则应该从新的 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 端程序使用特定的字符集,如下所示:【通常没不必要】
    [client]
    default-character-set=charset_name
    
  • 当“character_set_system”与“character_set_server”或“character_set_client”不同时,如果您手动输入字符(作为数据库对象标识符,列值或两者),则这些字符可能在 Client 端输出中显示不正确,或者输出本身的格式不正确。在这种情况下,使用“--default-character-set=system_character_set”启动 mysqlClient 端(即,将 Client 端字符集设置为与系统字符集匹配)应该可以解决该问题。