Exemples d'attribution de jeu de caractères et collation
<<<
Jeux de caractères et collations de connexion Jeu de caractères et collation des chaînes littérales
>>>

11.3 Déterminer le jeu de caractères et la collation par défaut
11 Jeux de caractères et Unicode
 Manuel de Référence MySQL 4.1 : Version Française

Jeu de caractères et collation serveur
Jeu de caractères et collation de base de données
Jeu de caractères de tables et collation
Jeu de caractères de colonne et collation
Exemples d'attribution de jeu de caractères et collation
->Jeux de caractères et collations de connexion
Jeu de caractères et collation des chaînes littérales
Clause COLLATE dans différentes parties d'une requête SQL
COLLATE clause de précédence
Opérateur BINARY
Quelques cas spéciaux où la détermination de la collation est difficile
Les collation doivent correspondre au bon jeu de caractères
Un exemple de l'effet de collation

11.3.6 Jeux de caractères et collations de connexion

Plusieurs variables contrôlent les jeux de caractères et collation du système pour un client. Certaines ont déjà été mentionnées précédemment :

  • Le jeu de caractères et la collation sont disponibles dans les variables character_set_server et collation_server .
  • Le jeu de caractères et la collation par défaut de la base de données sont disponibles dans character_set_database et collation_database .
D'autres variables et collations sont impliquées dans la gestion des connexions entre un client et un serveur. Chaque client a un jeu de caractères et une collation attitrés.

Pensez à ce qu'est une "connexion" : c'est ce que vous faites lorsque vous vous connectez au serveur. Le client envoie des SQL commandes comme des requêtes, au travers de la connexion, vers le serveur. Le serveur renvoie des réponses, comme des jeux de résultats, au client, au travers de la connexion. Ceci mène à plusieurs questions telles que :

  • Dans quel jeu de caractères est la requête lorsqu'elle quitte le client?

    Le serveur utilise la variable character_set_client pour connaître le jeu de caractères des requêtes émises par le client.

  • dans quel jeu de caractère le serveur devrait il traduire la requête après l'avoir reçue?

    Pour cela, character_set_connection et collation_connection sont utilisées par le serveur. Il convertit les requêtes envoyées par le client de character_set_client en character_set_connection (hormis les chaînes littérales qui sont précédées de _latin1 ou _utf8 ). collation_connection est importante pour les comparaisons de chaînes littérales. Pour les comparaisons de chaînes avec des colonnes, la collation de la colonne a la priorité.

  • Dans quel jeu de caractères le serveur devrait-il traduire les résultats ou messages d'erreur avant de les renvoyer au client?

    La variable character_set_results indique le jeu de caractères que le serveur utilise pour retourner les résultats aux clients. Cela inclut les données telles que les noms de colonnes ou les meta-données.

Vous pouvez configurez ces options là, ou vous pouvez vous fier aux configurations par défaut (auquel cas vous pouvez sauter cette section).

Il y a deux commandes qui permettent de modifier le jeu de caractères de la connexion :

SET NAMES 'charset_name'
SET CHARACTER SET charset_name
SET NAMES indique ce qui est dans la commande SQL que le client envoie. Par conséquent, SET NAMES cp1251 indique au serveur : ``les futurs messages fournis par ce client seront dans le jeu de caractères cp1251 '' et le serveur est libre de les traduire dans son propre jeu de caractères, éventuellement.La commande SET NAMES 'x' est équivalente à ces trois commandes :

mysql> SET character_set_client = x;
mysql> SET character_set_results = x;
mysql> SET character_set_connection = x;
SET CHARACTER SET est similaire, mais spécifie le jeu de caractères et la collation par défaut des bases pour la connexion. Une commande SET CHARACTER SET x est équivalente à :

mysql> SET character_set_client = x;
mysql> SET character_set_results = x;
mysql> SET collation_connection = @@collation_database;
Lorsque vous exécutez la commande SET NAMES ou SET CHARACTER SET , vous changez aussi la collation de la connexion. Cependant, la collation de connexion existe uniquement par cohérence. Généralement sa valeur n'a pas d'importance.

Avec le client mysql , il n'est pas nécessaire d'exécuter la commande SET NAMES à chaque démarrage. Vous pouvez ajouter l'option --default-character-set-name dans la ligne de commande de mysql , ou dans le fichier d'options. Par exemple, la ligne suivante est exécutée automatiquement à chaque démarrage de mysql :


[mysql]
default-character-set=koi8r
EXEMPLE : supposez que column1 est défini par CHAR(5) CHARACTER SET latin2 . Si vous n'indiquez pas SET CHARACTER SET , alors la commande SELECT column1 FROM t retournera les valeurs de la colonne column1 en utilisant le jeu de caractères latin2 . Si, d'un autre coté, vous utilisez la commande SET CHARACTER SET latin1 , le serveur va alors convertir le résultat de latin2 en latin1 juste avant de l'envoyer. De telles conversion sont lentes.

Si vous ne voulez pas que le serveur fasse des conversions, utilisez la valeur NULL à character_set_results :


mysql> SET character_set_results = NULL;

<< Jeux de caractères et collations de connexion >>
Exemples d'attribution de jeu de caractères et collation Déterminer le jeu de caractères et la collation par défaut Jeu de caractères et collation des chaînes littérales