mysqld
peut émettre des messages d'erreur dans les langues suivantes :
Hollandais, Anglais (par défaut), Estonien, Français, Allemand, Hongrois, Italien,
Norvégien, Polonais, Portugais, Espagnol et Suédois.
Pour démarrer mysqld
avec une langue donnée, utilisez l'option --language=lang
ou -L lang
. Par exemple :
shell> mysqld --language=swedish
ou:
shell> mysqld --language=/usr/local/share/swedish
Notez que tous les noms de langues sont spécifiés en minuscules.
Le fichie de langue est situé (par défaut, dans le dossier `mysql_base_dir/share/LANGUAGE/'.
Pour modifier le fichier de message d'erreur, il vous faut éditer le fichier `errmsg.txt' et exécuter la commande suivante pour générer le fichier `errmsg.sys' :
shell> comp_err errmsg.txt errmsg.sys
Si vous mettez à jour MySQL, n'oubliez pas de répeter la même manoeuvre avec le nouveau fichier @new `errmsg.txt'.
Par défaut, MySQL utilise le jeu de caractère ISO-8859-1 (Latin1). C'est le jeu de caractères utilisé aux USA et en Europe Occidentale.
Le jeu de caractères détermine les caractères autorisés dans les noms, et la méthode de tri utilisée dans les clauses ORDER BY
et GROUP BY
de la commandes SELECT
.
Vous pouvez changer le jeu de caractères au moment de la compilation, en utilisant l'option --with-charset=charset
de configure
.
4.7.1 Introduction à l'installation rapide.
Pour ajouter un nouveau jeu de caractères à MySQL, utilisez la procédure suivante :
-
Choisir un nom pour le jeu de caractère, dénommé
MYSET
.
-
Créer le fichier `strings/ctype-MYSET.c' dans la distribution source de MySQL.
-
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
-
Ajouter un numéro unique pour votre jeu de caractères dans `include/m_ctype.h.in'.
-
Ajouter le nom du jeu de caractère dans la liste
CHARSETS_AVAILABLE
de configure.in
.
-
Reconfigurer, recompiler et tester.
Si vous créez un jeu de caractères multi byte, vous pouvez utiliser la macro _MB
. Dans le fichier `include/m_ctype.h.in', ajouter :
#define MY_CHARSET_MYSET X
#if MY_CHARSET_CURRENT == MY_CHARSET_MYSET
#define USE_MB
#define USE_MB_IDENT
#define ismbchar(p, end) (...)
#define ismbhead(c) (...)
#define mbcharlen(c) (...)
#define MBMAXLEN N
#endif
où :
MY_CHARSET_MYSET | Une valeur de jeu de caractère unique.
|
USE_MB | Ce jeu de caractère a des caractères multi-byte, géré par ismbhead() et mbcharlen()
|
USE_MB_IDENT | (optionnel) Si défini, vous pouvez utiliser des noms de tables et de colonnes avec des caractères multi bytes.
|
ismbchar(p, e) | retourne 0 si p ne contient pas de caractère multi-byte , ou bien la taille des caractères (en octets). p et e pointent au début et à la fin de la chaîne.
Vérifier de (char*)p à (char*)e-1 .
|
ismbhead(c) | Vrai (Trueà si c est le premier caractère d'une chaîne multi-byte.
|
mbcharlen(c) | Taille d'une chaîne multi-byte si c est le premier caractère d'une chaîne.
|
MBMAXLEN | Taille en byte du plus grand caractère du jeu de caractère.
|