本节讨论向MySQL添加字符集的过程。正确的过程取决于字符集是简单的还是复杂的:
如果字符集不需要特殊的字符串排序例程进行排序,也不需要多字节字符支持,那么它就很简单。
如果字符集需要这些特性中的任何一个,那么它就是复杂的。
例如,希腊语
和swe7
是简单的字符集吗大四
和捷克语
是复杂的字符集。
要使用以下说明,您必须具有MySQL源分发。在说明中,MYSET
表示要添加的字符集的名称。
添加一个
元素MYSET
到sql /分享/数据集,但预览时教程/
文件。使用文件中的现有内容作为添加新内容的指南。部分列表拉丁语
元素遵循:Western family> <描述> CP1252 West Europe> ... <标志>主要 flag> 编译 flag> collation> ... 二进制标志> 编译 flag> collation> ... charset> 这
元素必须列出该字符集的所有排序规则。它们必须至少包括一个二进制排序规则和一个默认(主)排序规则。默认排序规则通常使用后缀名general_ci
(一般不区分大小写)。二进制排序规则可能是默认的排序规则,但它们通常是不同的。默认的排序规则应该有主
国旗。二进制排序规则应该有二进制
国旗。必须为每个排序规则分配唯一的ID号。id范围从1024到2047为用户定义的排序保留。要查找当前使用的排序规则id的最大值,使用以下查询:
Select max (id) from information_schema.collations;
此步骤取决于您是否添加了一个简单或复杂的字符集。一个简单的字符集只需要一个配置文件,而复杂的字符集需要C源文件,用于定义归类函数,多字节函数或两者。
对于一个简单的字符集,创建配置文件,
,描述字符集属性。创建此文件MYSET
. xmlsql /分享/数据集
目录中。您可以使用副本latin1.xml
作为这个文件的基础。这个文件的语法非常简单:注释被写成普通的XML注释(
<!--
)。文本
- >单词
<地图>
数组元素通过任意金额的空格分隔。每个单词在
<地图>
数组元素必须是十六进制格式的数字。这
<地图>
数组元素< ctype >
元素有257个单词。另一个<地图>
数组元素在其中有256个字。看第10.13.1节,“字符定义数组”.对于列出的每个归属
元素中设置的字符Index.xml
那
必须包含一个MYSET
. xml
元素,该元素定义字符排序。
对于一个复杂的字符集,请创建描述字符集属性的C源文件,并定义正确执行字符集上操作所需的支持例程:
创建文件
ctype-
在MYSET
.c字符串
目录中。看看现存的一个ctype - * . c
文件(如ctype-big5.c.
),看看需要定义什么。文件中的数组必须具有如下名称CTYPE_
那MYSET
降低_
等等。这些对应于一个简单字符集的数组。看第10.13.1节,“字符定义数组”.MYSET
对于每一个人
元素中列出的
元素中设置的字符Index.xml
, 这ctype-
文件必须提供排序规则的实现。MYSET
.c如果字符集需要字符串排序函数,请参见第10.13.2节“复杂字符集的”整理支持“.
如果字符集需要多字节字符支持,请参见第10.13.3节,“对复杂字符集的多字节字符支持”.
修改配置信息。使用现有配置信息作为添加信息的指南
MYSYS
.这里的示例假设字符集具有默认和二进制排序规则,但是如果需要,则需要更多行MYSET
有额外的排序。编辑
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_collation(&my_charset_MYSET_general_ci);add_compiled_collation(&my_charset_MYSET_Bin);#万一
如果字符集使用
ctype-
, 编辑MYSET
.c字符串/ cmakelists.txt.txt.
并添加ctype-
定义了MYSET
.cstrings_sources.
多变的。编辑
cmake / character_sets.cmake
:添加
MYSET
价值CHARSETS_AVAILABLE
按字母顺序排列。添加
MYSET
价值charsets_complex
按字母顺序排列。即使是简单的字符集,也需要这一点CMake.可以识别-DDEFAULT_CHARSET =
.MYSET
重新配置,重新编译和测试。