Administrateur PHPfrance |
3088 Messages
04 avr. 2006, 16:37
Le problème avec ce
comparatif c'est que ton client doit configuré en latin1, donc lorsque tu essaies d'exprimer une chaîne en UTF-8 certains caractères deviennent corrompus. Pour correctement reproduire ton exemple, je pense qu'il faudrait faire ça:
Code : Tout sélectionner
mysql> SET NAMES 'latin1';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT _latin1 "Avec l'heure d'été le soleil n'est guère au rendez-vous";
+---------------------------------------------------------+
| Avec l'heure d'été le soleil n'est guère au rendez-vous |
+---------------------------------------------------------+
| Avec l'heure d'été le soleil n'est guère au rendez-vous |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SET NAMES 'utf8';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT _utf8 "Avec l'heure d'été le soleil n'est guère au rendez-vous";
+---------------------------------------------------------+
| Avec l'heure d'été le soleil n'est guère au rendez-vous |
+---------------------------------------------------------+
| Avec l'heure d'été le soleil n'est guère au rendez-vous |
+---------------------------------------------------------+
1 row in set (0.00 sec)
@thedavix: pour répondre à ta question, j'utilise ascii_bin, utf8_bin ou utf8_general_ci selon le type de données à stocker: mes identifieurs n'utilisent que 0-9a-z_ donc j'utilise ascii_bin par sécurité (ascii_bin n'autorise pas les caractères accentués), sinon j'utilise utf8_bin sauf lorsque je ne peux pas autoriser de doublons tels que "User" et "user" (qui sont différents pour utf8_bin mais identique pour utf8_general_ci). Pour un maximum de flexibilité je te recommande d'utiliser
utf8_general_ci.
N'oubliez pas de modifier votre my.ini (ou my.cnf), spécialement la section