Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

PHP4 - conversion automatique UTF8 / ISO8859-1 - Gentoo - OVH

4 réponses
Avatar
Jerome Blion
Bonjour,

Je cherche à cibler un problème pour le résoudre de manière pérenne.
J'ai une base Mysql5 qui contient plusieurs dizaines de Mo de données.
Le serveur est une Gentoo préparée par OVH.
(Linux ns23268.ovh.net 2.4.33grs-bipiv-ipv4-32 #1 SMP lun oct 23
19:00:07 CEST 2006 i686 Intel(R) Pentium(R) 4 CPU 3.00GHz GNU/Linux)

La version installée par défaut est un PHP 4.4.2, compilé par OVH.

En raison de problèmes de fuites de mémoire, je suis en train de tenter
de recompiler PHP. J'ai fait mes essais avec une version 4.4.4.

Le but est d'utiliser la machine pour un forum phpBB tuné à très fort
traffic (la machine est à moitié à genoux !)

Ce forum phpBB stocke les données dans la base de données en UTF-8.
- Avec la version 4.4.2-OVH, les champs sont extraits en ISO-8859.
Mes pages étant dans le même jeu d'encodage, tout se passe bien.
- Avec ma version 4.4.4, tous mes accents ressortent de travers
(double caractère).

- Dans les deux cas, j'utilise le même php.ini (spécifié dans le
configure).
- Les "./configure ..." sont identiques (j'ai copié celui d'OVH pour
compiler ma version).
- J'utilise le même my.cnf (vu que je n'ai qu'une version de Mysql)
- php-config me donne exactement les mêmes sorties pour tous les
paramètres sauf --version.

Dans le my.cnf, je vois ça dans presque toutes les sections de
configuration du fichier :
character-sets-dir=/usr/share/mysql/charsets
default-character-set=latin1

Si je les enlève, les caractères accentués ne sont pas retranscrits
correctement, quelle que soit la version de PHP utilisée.

Qu'est-ce que je pourrais essayer pour trouver la cause de cette
différence de comportement ? Toutes les idées sont les bienvenues ;-)

A très bientôt !
Jérôme Blion.

4 réponses

Avatar
thierry
Bonjour,
bonjour,


Ce forum phpBB stocke les données dans la base de données en UTF-8.
---------------------------------------------------------------^

combinée avec les lignes suivantes c'est louche
configuration du fichier :
character-sets-dir=/usr/share/mysql/charsets
default-character-set=latin1
----------------------------^


tu utilises le même serveur MySQL (physiquement je veux dire)
sinon comment as tu fais le transfert des données ?
tu as un dump de la structure d'une table sur le serveur OVH
et sur ton éventuel nouveau serveur ?

Avatar
Jerome Blion
Bonjour,
bonjour,


Ce forum phpBB stocke les données dans la base de données en UTF-8.
---------------------------------------------------------------^

combinée avec les lignes suivantes c'est louche
configuration du fichier :
character-sets-dir=/usr/share/mysql/charsets
default-character-set=latin1
----------------------------^


tu utilises le même serveur MySQL (physiquement je veux dire)
sinon comment as tu fais le transfert des données ?
tu as un dump de la structure d'une table sur le serveur OVH
et sur ton éventuel nouveau serveur ?


Bonjour,

J'utilise dans le même cas le même serveur physique. Le même serveur
Apache. Le même serveur Mysql. Exactement la même base de données...


Avatar
Jerome Blion
Suite des épisodes...

- Après un mysqldump complet : iconv -c --from-code=UTF-8
--to-code=ISO-8859-15 -o simplage_iso.sql simplage.sql

==> Les accents ne sont plus affichés sur les pages phpBB ! Et en plus,
j'ai une ligne incohérente dans mes INSERT...

- Après un mysqldump de la structure seule : sed 's/latin1/utf8/g'
simplage_structure.sql > simplage_structure-data.sql

J'importe ma structure, puis mes données...

==> Les accents sont mal rendus avec ma 4.4.4 quel que soit le contenu
de my.cnf

Je vais me tirer un plomb. En attendant, je vais recompiler la toute
dernière release PHP, ça va me détendre !

Si vous avez des idées... Faites vous plaisir, je sèche !
Avatar
Jerome Blion
Suite des épisodes...

- Après un mysqldump complet : iconv -c --from-code=UTF-8
--to-code=ISO-8859-15 -o simplage_iso.sql simplage.sql

==> Les accents ne sont plus affichés sur les pages phpBB ! Et en plus,
j'ai une ligne incohérente dans mes INSERT...

- Après un mysqldump de la structure seule : sed 's/latin1/utf8/g'
simplage_structure.sql > simplage_structure-data.sql

J'importe ma structure, puis mes données...

==> Les accents sont mal rendus avec ma 4.4.4 quel que soit le contenu
de my.cnf

Je vais me tirer un plomb. En attendant, je vais recompiler la toute
dernière release PHP, ça va me détendre !

Si vous avez des idées... Faites vous plaisir, je sèche !


OK après avoir fouillé de partout, j'ai commencé à sérieusement me poser
des questions sur le client Mysql.
Quand je me connecte sur le serveur Mysql avec mysql administrator, les
caractères étaient bien dans le bon jeu d'encodage.

Ce qui me laissait supposer que soit PHP soit le client Mysql me les
convertissait.

Après une recherche dans le script mysqlbug, j'ai vu la ligne de
configure de compilation... Et des UTF8 de partout dans la ligne.

Après les avoir enlevé et recompilé Mysql tout propre, ça fonctionne au
poil, quelle que soit la version de PHP... Donc, j'ai mis la mienne :D

Youpi, ça marche.

Gentoo, je te hais !!!
Jérôme.