DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(mysql.info.gz) Adding character set

Info Catalog (mysql.info.gz) Languages (mysql.info.gz) Localisation (mysql.info.gz) Character arrays
 
 5.8.3 Adding a New Character Set
 --------------------------------
 
 This section discusses the procedure for adding add another character
 set to MySQL.  You must have a MySQL source distribution to use these
 instructions.
 
 To choose the proper procedure, decide whether the character set is
 simple or complex:
 
    * If the character set does not need to use special string collating
      routines for sorting and does not need multi-byte character
      support, it is simple.
 
    * If it needs either of those features, it is complex.
 
 
 For example, `latin1' and `danish' are simple character sets, whereas
 `big5' and `czech' are complex character sets.
 
 In the following procedures, the name of your character set is
 represented by MYSET.
 
 For a simple character set, do the following:
 
   1. Add MYSET to the end of the `sql/share/charsets/Index' file.
      Assign a unique number to it.
 
   2. Create the file `sql/share/charsets/MYSET.conf'.  (You can use a
      copy of `sql/share/charsets/latin1.conf' as the basis for this
      file.)
 
      The syntax for the file is very simple:
 
         * Comments start with a `#' character and proceed to the end of
           the line.
 
         * Words are separated by arbitrary amounts of whitespace.
 
         * When defining the character set, every word must be a number
           in hexadecimal format.
 
         * The `ctype' array takes up the first 257 words. The
           `to_lower[]', `to_upper[]' and `sort_order[]' arrays take up
           256 words each after that.
 
       Character arrays.
 
   3. Add the character set name to the `CHARSETS_AVAILABLE' and
      `COMPILED_CHARSETS' lists in `configure.in'.
 
   4. Reconfigure, recompile, and test.
 
 
 For a complex character set, do the following:
 
   1. Create the file `strings/ctype-MYSET.c' in the MySQL source
      distribution.
 
   2. Add MYSET to the end of the `sql/share/charsets/Index' file.
      Assign a unique number to it.
 
   3. Look at one of the existing `ctype-*.c' files (such as
      `strings/ctype-big5.c') to see what needs to be defined.  Note
      that the arrays in your file must have names like `ctype_MYSET',
      `to_lower_MYSET', and so on.  These correspond to the arrays for a
      simple character set.  Character arrays.
 
   4. Near the top of the file, place a special comment like this:
 
           /*
            * This comment is parsed by configure to create ctype.c,
            * so don't change it unless you know what you are doing.
            *
            * .configure. number_MYSET=MYNUMBER
            * .configure. strxfrm_multiply_MYSET=N
            * .configure. mbmaxlen_MYSET=N
            */
 
      The `configure' program uses this comment to include the character
      set into the MySQL library automatically.
 
      The `strxfrm_multiply' and `mbmaxlen' lines are explained in the
      following sections.  You need include them only if you need the
      string collating functions or the multi-byte character set
      functions, respectively.
 
   5. You should then create some of the following functions:
 
         * `my_strncoll_MYSET()'
 
         * `my_strcoll_MYSET()'
 
         * `my_strxfrm_MYSET()'
 
         * `my_like_range_MYSET()'
 
       String collating.
 
   6. Add the character set name to the `CHARSETS_AVAILABLE' and
      `COMPILED_CHARSETS' lists in `configure.in'.
 
   7. Reconfigure, recompile, and test.
 
 The `sql/share/charsets/README' file includes additional instructions.
 
 If you want to have the character set included in the MySQL
 distribution, mail a patch to the MySQL `internals' mailing list.
  Mailing-list.
 
Info Catalog (mysql.info.gz) Languages (mysql.info.gz) Localisation (mysql.info.gz) Character arrays
automatically generated byinfo2html