interclassement en "latin1_swedish_ci" ou "ut

Invité
Invité n'ayant pas de compte PHPfrance

08 févr. 2007, 11:46

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

Eléphant du PHP | 136 Messages

09 févr. 2007, 10:15

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.
L'informatique apporte des solutions à des problèmes qui ne se posaient pas avant qu'elle existe.

ViPHP
ViPHP | 1961 Messages

09 févr. 2007, 11:13

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.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Petit nouveau ! | 1 Messages

09 févr. 2007, 16:04

[ 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

ViPHP
ViPHP | 1961 Messages

09 févr. 2007, 18:29

RE,

Tu as des fonctions PHP comme utf8_encode() et utf8_decode().
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Invité
Invité n'ayant pas de compte PHPfrance

09 févr. 2007, 18:42

ah, oui, tout simplement - pourquoi je n'y ai pas pensé ?!

merci en tout cas