Page 1 sur 1

[MySQL] Encodage ?

Posté : 13 sept. 2008, 11:45
par Pod
Bonjour,


Dans MySQL, sur la page d'accueil, il est marqué :
Interclassement pour la connexion MySQL UTF8_unicode_ci

Est-ce normal ? ou dois-je prendre latin1 ?

De plus, (je ne sais pour quelle raison) mes tables ont comme interclassement : latin1_swedish_ci. Or pour moi swedish = suèdois. Dois-je laisser comme ça ou changer ?

Merci

Re: [MySQL] Encodage ?

Posté : 13 sept. 2008, 15:24
par Berzemus
Ben je dirais que tant que tu n'as pas de soucis particuliers d'encodage, y'a pas à s'inquiéter ^-^

Mais pour une question de culture, que le jeu de caractères soit UTF-8 n'apporte pas trop de contraintes, c'est un jeu de caractères standard, tout comme iso-8859-1 (ou latin-1 si tu veux), mais qui me semble est plus utilisé par les programmeurs.

Pour l'interclassement, c'est suédois simplement parce que les auteurs de mysql sont suédois (en tout cas c'est ce qu'on dit). Ca joue sur le tri des caractères entre eux.

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

Posté : 13 sept. 2008, 18:01
par Pod
Ok, effectivement je n'ai pas de soucis particuliers. Je pense passer en latin1_fr mes tables pour que ce soit plus logique. Mon problème se pose au niveau du CS ou CI (Case Sensitive ou Case Insensitive), que choisir ?

Sinon, je laisse l'interclassement (sur la page d'accueil) en UTF8 ou je passe en latin1 aussi ?

Merci

Posté : 13 sept. 2008, 19:04
par AB
L'UTF-8 permet l'affichage de tous les caractères internationaux. C'est donc la norme choisie par de plus en plus de développeurs puisqu'elle convient dans tous les cas de figure. D'ailleurs php6 travaillera en UTF-8 par défaut.

Si tu débute je te conseillerais plutôt de choisir cette norme. Surtout que le passage (en cas de besoin) d'un site iso-8859-1 en UTF-8 peut prendre un certain temps... Donc autant prendre les bonnes habitudes dès le départ.

Quoi que tu choisisse, il faut être homogène tout au long de ton codage...

J'ai fait dernièrement un petit tuto d'inscription dans un espace membre en utilisant la norme UTF-8, si tu veux voir un exemple complet - mysql php html - c'est ici (et cela répondra également à ta question sur casse sensitive)

Posté : 13 sept. 2008, 22:19
par Pod
Ok, j'ai regardé ton tuto et j'ai compris pour case Sensitive. (un exploit depuis le temps que je cherche xD).

Par contre pour l'UTF-8, si je comprends bien, j'ai intérêt à encoder tous mes fichiers en UTF-8 et à coder mon code site en UTF-8 ?

Dans ce cas quel est le charset à utiliser (dans <head>) ?

Et par rapport à MySQL, tu utilises :
mysql_query("SET NAMES 'utf8'");
Cela convertit automatiquement tout en UTF-8 sans erreur d'accentuation et besoin de passer par utf8_encode() et utf8_decode() ?

Merci beaucoup !

Posté : 13 sept. 2008, 22:59
par AB
Dans le tuto tu as le code html pour la balise meta indiquant le charset en UTF-8.

Evidemment si tu choisi UTF-8, il est préférable d'encoder tes fichiers par défaut en UTF-8. Si tu as l'option "insérer une signature unicode BOM" décoche cette option, sinon pb à venir.

Si tout est codé en UTF-8 tu n'auras pas besoin d'utiliser utf8_encode() et utf8_decode().

D'ailleurs tu peux tester le code du tuto (il est directement fonctionnel si tu crée la table membres comme indiqué et que tu indiques tes données pour la connexion à la bdd dans le code php) et tu verras que cela enregistre et restitue bien tous les caractères accentués.

EDIT Pour info vas jusqu'à la fin du tuto, il est indiqué par ailleurs comment trouver la taille d'une chaîne de caractères en UTF-8 car dans ce cas la fonction strlen renverrait des valeurs fausses.

Posté : 14 sept. 2008, 10:16
par Pod
Ok. Merci beaucoup, sujet résolu, je vais tout passer en UTF-8.

Posté : 14 sept. 2008, 10:31
par zeus
Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton Image qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)