8797 sujets

Développement web côté serveur, CMS

Bonjour,

Je suis en train de migrer mon blog et mon nouvel hébergeur est sur MySQL 4. Sur le nouveau blog (copie conforme de l'ancien, à l'exception des fichiers de conf), les caractères accentués sautent. En regardant le code, j'ai confirmation que ça ne vient pas du navigateur (le code source est corrompue).

Cependant les caractères accentués présents dans les fichers eux-mêmes (comme Rétroliens, Empyrée…) apparaissent très bien. Seuls sont corrompus les catégories, post, chapô, commentaires… bref, tout ce qui vient de la base de données. Mes recherches concluent que les egistrements eux-mêmes sont toujours en bon UTF-8 des chaumières. Ce n'est qu'au moment du service (passage de MySQL à la page Web) que les caractères partent en vrille.

Je m'oriente vers un problème soit de PHP, soit de MySQL. J'ai cru comprendre que pas mal de gens avaients des problèmes avec MySQL 4. Est-ce que quelqu'un pourrait me dire comment récupérer un encodage fonctionnel ? Je suis en UTF-8 et c'est dans ce format que j'ai importé ma sauvegarde depuis PHPMyAdmin.

Pour diagnostiquer :
blog (nouveau) - http://empyree.nfshost.com/dotclear/
Apache - 1.3.33
MySQL - 4.1.7
PHP - 4.3.10

Merci
Modifié par David Latapie (16 Feb 2005 - 06:18)
MySQL 4.1 gère les jeux et codages caractères, contrairement à son prédécesseur. Ce qui veut dire que si tu met des caractères UTF-8 dans une base/table déclarée en ISO-8859-1 tu cours à ta perte quand le client et le serveurs feront une auto-négociation du codage caractère et feront une conversion auto.

Deux solutions :
- bien déclarer le bon codage et collage pour tes tables et bases
- mettre tous tes champs en binary
Dans interclassement, il y a marqué utf8-general-ci pour toutes les tables. Comme le texte est de l'UTF-8, ça devrait marcher non ?
Par ailleurs, je ne comprends pas pourquoi il y a des valeurs UTF-8 de langue (swedish, persian…) en plus de la valeur « Unicode »… UTF-8 est censé être multilingue…

Ganf a écrit :
- mettre tous tes champs en binary

MMh, sur une table en UTF-8, est-ce une bonne idée ? Qu'est-ce que fait exactement le binaire ?