par
Hubert Roksor » 03 févr. 2006, 02:33
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
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/charset-general.html