Page 1 sur 1

interclassement en "latin1_swedish_ci" ou "ut

Posté : 08 févr. 2007, 11:46
par Invité
Bonjour

On m'a dit il y a pas longtemps que utf-8 est plus sûr pour le bon affichage des caractères avec accents mais je vois que par défaut l'interclassement de ma base MySQL est latin1_swedish_ci

devrais-je mettre les colonnes texte en utf8_unicode_ci ?

merci pour vos réponses

Posté : 09 févr. 2007, 10:15
par Dominic
j'ai longtemps été ennuyé avec les interclassements
et la meilleure formule pour moi est latin1_bin avec laquelle je n'ai plus jamais eu ce pb d'accent.

Posté : 09 févr. 2007, 11:13
par Ajoloca
Bonjour,

Pour passer une base en encodage UTF-8, il ne suffit pas de déclarer les colonnes de type CHAR() ou VARCHAR() en utf8.

Il faut déclarer le stockage en utf8.
La communication serveur -> client et client -> serveur en utf8
L'entêtes des pages en utf8.
Les fichiers (sources PHP, (X)HTML, JS, sauvegardes de la base, ...) doivent être sauvegardés en utf8

La différence entre l'UTF-8 et le iso-8859-1 se situe principalement dans le nombre de caractères supportés, l'UTF-8 supporte (est capable d'encoder tous les caractères de) toutes les langues actuellement connues.

Dans quels cas utiliser UTF-8 ?
Si l'application doit supporter des caractères autres que les caractères ANSI.
Si une internationalisation de l'application est prévue.
Si l'on utilise un système Linux/Unix qui encode par défaut en UTF-8.

Pour une utilisation des langues ouest-européennes l'iso-8859-1 peut très bien convenir mais en prennent soin si manipulation de fichiers entre systèmes hétérogènes exp. Linux->Windows, ...

Pour une utilisation WEB, Si vous ne voulez pas vous soucier de l'encodage des caractères utilisez les entités (X)HTML pour les caractères spéciaux exp. le é codez-le en é car les caractères ANSI correspondent aux mêmes codes que leurs homologues UTF-8.

Posté : 09 févr. 2007, 16:04
par carlsberg
[ en fait c'est moi qui a posé la question ]

Bonjour et merci pour les réponses
La communication serveur -> client et client -> serveur en utf8
L'entêtes des pages en utf8.
Les fichiers (sources PHP, (X)HTML, JS, sauvegardes de la base, ...) doivent être sauvegardés en utf8
pour la plupart ça va :

mes pages sont encodées utf-8 et le charset c'est utf-8

Je fais mes connexions avec mysql_query("SET CHARACTER_SET utf8");

J'ai définit maintenant mes tableaux de bdd avec les colonnes en utf-8 et ça m'a l'air de marcher

sauf - quand j'envois un email avec mail() - là j'ai des probs d'accent - il faut croire que le système email n'est pas compatible utf-8

qu'est-ce que je peux faire pour re-encoder mes emails dans l'encodage "normal" du protocol email ??

merci

Posté : 09 févr. 2007, 18:29
par Ajoloca
RE,

Tu as des fonctions PHP comme utf8_encode() et utf8_decode().

Posté : 09 févr. 2007, 18:42
par Invité
ah, oui, tout simplement - pourquoi je n'y ai pas pensé ?!

merci en tout cas