9.1.2 Ajouter un nouveau jeu de caractère

  1. Choisir un nom pour le jeu de caractère, dénommé MYSET.
  2. Créer le fichier `strings/ctype-MYSET.c' dans la distribution source de MySQL.
  3. Regarder dans le fichier `ctype-*.c' pour savoir ce qui doit être défini. Notez que les tableaux de votre fichier doivent avoir des noms du type ctype_MYSET, to_lower_MYSET etc... to_lower[] et to_upper[] sont de simples tableaux qui contiennent les caractères minuscules et majuscules du jeu de caractère. Par exemple :
    to_lower['A'] doit contenir 'a'
    to_upper['a'] doit contenir 'A'
    
    sort_order[] est une map qui indique comment les caractères doivent être ordonné lors des comparaisons et des tris. Pour la plus part des jeux de caractères, c'est la même valeur que pour to_upper[] (ce qui signifie que le tri sera insensible à la casse). MySQL effectuera les tris en se basant sur la valeur de sort_order[character]. ctype[] est un tableau de valeurs de bit, avec un élément par caractère. (Notez que to_lower[], to_upper[] et sort_order[] sont indexés par valeur de caractère, mais que ctype[] est indexé par valeur de caractère +1. C'est une vieille technique qui permet de gérer les EOF). Vous pouvez trouver la définitions de ces champs de bit dans `m_ctype.h':
    #define _U      01      /* Majuscule */
    #define _L      02      /* Minuscule */
    #define _N      04      /* Chiffre */
    #define _S      010     /* Espacement*/
    #define _P      020     /* Ponctuation */
    #define _C      040     /* Caractère de contrôle */
    #define _B      0100    /* Blanc */
    #define _X      0200    /* Chiffre hexadécimal */
    
    L'entrée de ctype[] pour chaque caractère doit être l'union des masques de bits qui décrivent le caractère. Par exemple, 'A' est une caractère majuscule, (_U) mais aussi un chiffre hexadécimal. (_X), donc son type devrait contenir ctype['A'+1]
    _U + _X = 01 + 0200 = 0201
    
  4. Ajouter un numéro unique pour votre jeu de caractères dans `include/m_ctype.h.in'.
  5. Ajouter le nom du jeu de caractère dans la liste CHARSETS_AVAILABLE de configure.in.
  6. Reconfigurer, recompiler et tester.