Page 1 sur 1

choix collation Mysql

Posté : 30 janv. 2006, 16:18
par gforce
bonjour,

quel choix de collation serait le plus approprié pour des tables contenant du français,anglais,arabe,chinois.

J'ai remarqué aussi qu'il y avait CHARSET=utf8 COLLATE=utf8_bin lors de la création de la table quelles sont les différences entre CHARSET et COLLATE?
Les champs contiennent eux aussi des collates. Ma quetion est: où dois je définir ceux-ci? dans ta table ou dans chaques champs? ou encore les 2?

Merci

Posté : 03 févr. 2006, 02:33
par Hubert Roksor
Le charset, c'est le "set de caractères", c-à-d l'ensemble des lettres et symboles que l'on peut utiliser pour composer des phrases. La collation elle, sert à comparer les chaînes. Par exemple utf_bin comparera les chaînes de façon stricte ("binary-safe") et donc "A" ne sera pas égal à "a". utf_general_ci est similaire, si ce n'est qu'il est insensible à la casse et donc "SELECT nom FROM table WHERE nom = 'Albert'" retournera toutes les variations contenues dans la base: "albert", "alBERT", etc...

Pour les utf8_swedish_machin c'est une histoire d'ordre alphabétique dépendant de chaque pays. Par exemple, où placer la ligature "ae": entre le a et le b ou après le "z" ?

Pour faire court: "CHARSET=utf8 COLLATE=utf8_bin" convient à tous ceux qui ne font pas la différence avec les collations ;) Quant à l'endroit où le définir, si tu le définis dans la base alors toutes les tables qui n'ont pas de définition explicite en hériteront. Pareil pour les colonnes, si ta table est "utf8" et que tu n'indiques pas que tu préfères un autre charset pour une nouvelle colonne alors elle sera créée comme si tu avais précisé "utf8".

http://dev.mysql.com/doc/refman/5.0/fr/ ... neral.html