10.13 添加字符集

本节讨论将字符集添加到 MySQL 的过程。正确的过程取决于字符集是简单还是复杂:

例如,greekswe7是简单字符集,而big5czech是复杂字符集。

要使用以下说明,您必须具有 MySQL 源发行版。在说明中,* MYSET *table 示要添加的字符集的名称。

<charset name="latin1">
  <family>Western</family>
  <description>cp1252 West European</description>
  ...
  <collation name="latin1_swedish_ci" id="8" order="Finnish, Swedish">
    <flag>primary</flag>
    <flag>compiled</flag>
  </collation>
  <collation name="latin1_danish_ci" id="15" order="Danish"/>
  ...
  <collation name="latin1_bin" id="47" order="Binary">
    <flag>binary</flag>
    <flag>compiled</flag>
  </collation>
  ...
</charset>

<charset>元素必须列出该字符集的所有归类。这些必须至少包括二进制排序规则和默认(主要)排序规则。默认排序规则通常使用后缀general_ci命名(一般,不区分大小写)。二进制排序规则有可能是默认排序规则,但通常它们是不同的。默认排序规则应带有primary标志。二进制排序规则应具有binary标志。

您必须为每个排序规则分配唯一的 ID 号。 ID 的范围从 1024 到 2047,保留给用户定义的归类。要查找当前使用的最大归类 ID 的最大值,请使用以下查询:

SELECT MAX(ID) FROM INFORMATION_SCHEMA.COLLATIONS;

对于简单的字符集,创建一个描述字符集属性的配置文件MYSET.xml。在sql/share/charsets目录中创建此文件。您可以使用latin1.xml的副本作为此文件的基础。该文件的语法非常简单:

对于复杂的字符集,创建一个 C 源文件,该文件描述字符集属性并定义正确执行该字符集所需的支持例程:

将这些行添加到“声明”部分:

#ifdef HAVE_CHARSET_MYSET
extern CHARSET_INFO my_charset_MYSET_general_ci;
extern CHARSET_INFO my_charset_MYSET_bin;
#endif

将这些行添加到“注册”部分:

#ifdef HAVE_CHARSET_MYSET
  add_compiled_collation(&my_charset_MYSET_general_ci);
  add_compiled_collation(&my_charset_MYSET_bin);
#endif
首页