Problème d'accents après migration php 5.3 vers 5.4

Petit nouveau ! | 2 Messages

19 sept. 2015, 18:57

Bonjour à tous,
OVH, me demande de migrer mon site vers php5.4,
j'ai effectué un certain nombres de modifications en lisant les indications de migration sur le site officiel php, mais lorsque j'ai voulu tester mes pages tout les textes issues de la base de données sont vides lorsqu'il contiennent ds accents.
de plus lorsque j'essaye d'enregistrer dans la base par un formulaire du site, un texte avec accents, cela enregistre aussi du texte vide.
phpmyadmin m'indique que ma base a un interclassement utf8_unicode_ci, il indique pour l'interclassement de chaque table : "latin1_swedish_ci".
J'ai essayé plusieurs conversion en faisant des export / import de table en iso, utf8 dans tout les sens, un peu au hasard il est vrai,
mais sans obtenir de résultat correct.
Pour le moment je suis revenu à php 5.3 mais OVH va supprimer cette version à partir du 24 septembre et là je serai coincé.
Le site est un basé sur du XOOPS, que j'administre bénévolement, mais je me suis formé un peu sur le tas, et là je suis un peu perdu...
Quelqu'un pourrait-il m'aider en m'indiquant une procédure ?
Merci d'avance

Petit nouveau ! | 4 Messages

21 sept. 2015, 08:30

Bonjour,

Voici un lien qui pourrait t'aider : https://docs.moodle.org/19/fr/Convertir ... L_en_UTF-8

Cordialement,

Romain

Petit nouveau ! | 2 Messages

24 sept. 2015, 15:02

Bonjour,
merci pour cette réponse.
Finalement j'ai trouvé le fin mot de l'histoire.
Depuis la version 5.4 de PHP, les fonctions htmlspecialchars et htmlentities prennent l'encodage UTF8 par DEFAUT, alors qu'en 5.3 c'etait ISO-8859-1
(Attention en 5.5 et 5.6 ça a encore changé)
Donc il faut rajouter explicitement en 2ieme voire en 3ieme paramètre, l'encodage ISO pour qu'il soit utilisé: htmlspecialchars($maVariable, ENT_COMPAT, "ISO-8859-1");

exemple, remplacer:
htmlspecialchars($maVariable, ENT_QUOTES);
par:
htmlspecialchars($maVariable, ENT_QUOTES | ENT_COMPAT, "ISO-8859-1");