Encodages MySQL

vassago

Membre confirmé
22 Novembre 2000
124
1
42
www.presta-module.com
Bonsoir à tous,

Je rencontre des soucis d'affichage dans mes pages de résultats MySQL lorsque qu'ils comportent des caractères accentués.
Mes scripts sont écrits dans un fichier encodé en UTF-8 (no BOM), et ma base a été créée par phpMyAdmin. J'ai essayé de passer les encodages des champs en UTF-8 à l'aide de PMA, mais Safari affiche des points d'interrogation au lieu des accents.

Quelqu'un peut m'aider svp ?
merci !

Steph
 

Anabys

Membre d’élite
Club MacG
2 Août 2004
1 099
67
Paris
www.valhalla.fr
De manière générale quand tu utilises un encodage comme UTF-8 tu dois veiller à l'utiliser à toutes les étapes de construction et d'utilisation de ton site: enregistrement des fichiers sources, envoi de données dans la base, récupération des données de la base, affichage de ces données.

Deux pistes de recherche:

L'encodage de la page:
Il faut que la page qui affiche les donn&#233;es de MySQL soit dans le m&#234;me encodage, i.e. qu'elle contienne <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

La version et le param&#233;trage de MySQL:
Les anciennes versions supportent mal UTF-8, elles sont param&#233;tr&#233;es par d&#233;faut pour ISO Latin 1.
 

vassago

Membre confirmé
22 Novembre 2000
124
1
42
www.presta-module.com
Anabys a dit:
L'encodage de la page:
Il faut que la page qui affiche les données de MySQL soit dans le même encodage, i.e. qu'elle contienne <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
C'est effectivement mon problème.
Ce que je ne sais pas faire, c'est paramétrer les encodages dans MySQL. En utilisant PMA, j'ai constaté que l'encodages par défaut était Latin1. J'ai modifié les encodages des tables et des champs pour l'UTF8_bin.
J'ai malheureusement le même problème sur les anciens comme les nouveaux enregistrements MySQL.
Faut il que je reconstruise la base depuis le départ en UTF ?
Si oui, quel UT je choisis dans PMA ? utf8_bin, utf8_general_ci, ...

Anabys a dit:
La version et le paramétrage de MySQL:
Les anciennes versions supportent mal UTF-8, elles sont paramétrées par défaut pour ISO Latin 1.
Je tourne sur la version 4.1.14
 

Anabys

Membre d’élite
Club MacG
2 Août 2004
1 099
67
Paris
www.valhalla.fr
Pour la version c'est bon, elle est sup&#233;rieure &#224; 4.1.

Pour l'UTF-8 je ne l'utilise jamais donc je ne connais pas les diff&#233;rentes versions, mais la general_ci semble convenir &#224; premi&#232;re vue (j'utilise syst&#233;matiquement Latin 1 quand le texte n'est qu'en fran&#231;ais ou anglais).

Apr&#232;s il te faudra en effet parcourir toute la base pour convertir les entr&#233;es qui sont dans un autre encodage. Une recherche sur google devrait te donner des indications pour faire &#231;a, ou sinon un petit script ici.