10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册 本手册摘录

10.13添加字符集

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

  • 如果字符集不需要特殊的字符串排序例程进行排序,也不需要多字节字符支持,那么它就很简单。

  • 如果字符集需要这些特性中的任何一个,那么它就是复杂的。

例如,希腊语swe7是简单的字符集吗大四捷克语是复杂的字符集。

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

  1. 添加一个元素MYSETsql /分享/数据集,但预览时教程/文件。使用文件中的现有内容作为添加新内容的指南。部分列表拉丁语元素遵循:

      Western  <描述> CP1252 West Europe> ...  <标志>主要 编译   ...  二进制 编译  ... 

    元素必须列出该字符集的所有排序规则。它们必须至少包括一个二进制排序规则和一个默认(主)排序规则。默认排序规则通常使用后缀名general_ci(一般不区分大小写)。二进制排序规则可能是默认的排序规则,但它们通常是不同的。默认的排序规则应该有国旗。二进制排序规则应该有二进制国旗。

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

    Select max (id) from information_schema.collations;
  2. 此步骤取决于您是否添加了一个简单或复杂的字符集。一个简单的字符集只需要一个配置文件,而复杂的字符集需要C源文件,用于定义归类函数,多字节函数或两者。

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

    • 注释被写成普通的XML注释(<!--文本- >)。

    • 单词<地图>数组元素通过任意金额的空格分隔。

    • 每个单词在<地图>数组元素必须是十六进制格式的数字。

    • <地图>数组元素< ctype >元素有257个单词。另一个<地图>数组元素在其中有256个字。看第10.13.1节,“字符定义数组”

    • 对于列出的每个归属元素中设置的字符Index.xmlMYSET. xml必须包含一个元素,该元素定义字符排序。

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

  3. 修改配置信息。使用现有配置信息作为添加信息的指南MYSYS.这里的示例假设字符集具有默认和二进制排序规则,但是如果需要,则需要更多行MYSET有额外的排序。

    1. 编辑mysys / charset-def.c,登记新字符集的排序规则。

      将这些行添加到宣言部分:

      #ifdef has_charset_MYSET走读生CHARSET_INFO my_charset_MYSET_general_ci;走读生CHARSET_INFO my_charset_MYSET_bin;#万一

      将这些行添加到登记部分:

      #ifdef has_charset_MYSETadd_compiled_collat​​ion(&my_charset_MYSET_general_ci);add_compiled_collat​​ion(&my_charset_MYSET_Bin);#万一
    2. 如果字符集使用ctype-MYSET.c, 编辑字符串/ cmakelists.txt.txt.并添加ctype-MYSET.c定义了strings_sources.多变的。

    3. 编辑cmake / character_sets.cmake

      1. 添加MYSET价值CHARSETS_AVAILABLE按字母顺序排列。

      2. 添加MYSET价值charsets_complex按字母顺序排列。即使是简单的字符集,也需要这一点CMake.可以识别-DDEFAULT_CHARSET =MYSET

  4. 重新配置,重新编译和测试。