Page 1 sur 1

Quel format pour une base de donnée?

Posté : 04 avr. 2006, 09:26
par thedavix
Bonjour à vous :lol:
J'ai une question un peu technique à vous demander, quel format utilisez vous pour une bdd ?
latin1? Utf?ascii? pour avoir le minimum de problème de compatibilité avec les recherches sur les champs, accents etc etc :0)


Toutes interventions même pour dire bonjour sera la bienvenue :P


Davix :shock:

Posté : 04 avr. 2006, 09:52
par mario
Bonjour :wink:

Voici un petit comparatif des 2:

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> 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)

mysql>

Posté : 04 avr. 2006, 16:37
par Hubert Roksor
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

Code : Tout sélectionner

[mysql] default-character-set=utf8

Posté : 04 avr. 2006, 17:57
par mario
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.
:pouce: