Page 1 sur 1
Pb des caractères accentués dans la nouvelle version de php.
Posté : 07 mars 2016, 13:21
par marih
Bonjour,
j'ai lu quelques questions sur le site à ce sujet mais je n'ai pas tout compris...!
Dans tous les programmes (500) de php/html que j'utilise, il y a en tête:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">...
Depuis l'installation de la dernière version de PHP par mon hébergeur, les caractères ISO ci-dessus ne sont plus reconnu. Ce n'est pas beau sur l'écran mais ce ne serait pas grave fonctionnellement, par contre tout ce qui transite via des bases de données MySQL ne fonctionne plus, puisque les mots accentués ne sont plus reconnus.
Quelle est à votre avis la meilleure solution pour corriger le pb ?
D'avance un grand merci pour votre aide.
Re: Pb des caractères accentués dans la nouvelle version de php.
Posté : 07 mars 2016, 14:44
par @rthur
Bonjour,
Au delà de la déclaration en HTML du charset, le serveur fait aussi une déclaration dans les entêtes HTTP.
Tu peux voir celle-ci en faisant Ctrl+Maj+i dans Firefox ou Chrome, ça va t'ouvrir le volet pour les développeurs, puis va dans l'onglet réseau et rafraichis ta page (par F5)
Ensuite clique sur l'url de ta page (probablement la 1ère ligne) et regarde les entêtes renvoyées par ton serveur.
Pour modifier ce header, tu peux ajouter cette ligne au tout début de ta page PHP :
header('Content-Type: text/html; charset=utf-8');
Ici pour le mettre en utf-8, mais tu peux mettre à la place iso-8859-1
Sinon la solution que tu dois viser à moyen/long terme est de passer tous tes contenus en UTF-8
Re: Pb des caractères accentués dans la nouvelle version de php.
Posté : 07 mars 2016, 15:19
par marih
Bonjour @rthur,
dans mes programmes php, j'ai en début:
echo ('<html><head><title>Toto</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<STYLE>
BODY ...etc.
Dans cette phrase, j'ai changé 'iso-8859-1" en "UTF-8' et le canard est toujours vivant...!
je ne comprends pas où je dois mettre ce que tu me dis, à savoir:
header('Content-Type: text/html; charset=utf-8');
Merci de ton aide.
Re: Pb des caractères accentués dans la nouvelle version de php.
Posté : 07 mars 2016, 15:35
par @rthur
ligne 1 de ta page PHP <?php
ligne 2 : header('Content-Type: text/html; charset=utf-8');
Et après tu mets ce que tu veux

Re: Pb des caractères accentués dans la nouvelle version de php.
Posté : 07 mars 2016, 15:44
par marih
Re Bonjour, @rthur,
j'ai répondu trop vite. Désolé ! J'aurais du tourner ma langue 7 fois....
Bon j'ai rajouté en tête la phrase que tu m'as donnée et CA MARCHE.
TRÈS BIEN.
Par contre, le caractère "ç" qui était bien avant cet ajout, apparait maintenant sous la forme: "ç". Par exemple "Français".
Ce n'est pas beau mais le caractère est reconnu par MySQL donc le lien est bon.
Comment puis-je restaurer le "ç" ?
Merci beaucoup.
Re: Pb des caractères accentués dans la nouvelle version de php.
Posté : 07 mars 2016, 16:37
par @rthur
Il faut que tu regardes d'où il est issu (fichier PHP, fichier texte, base de données) et éventuellement que tu appliques les fonctions utf8_encode() ou utf8_decode()
Re: Pb des caractères accentués dans la nouvelle version de php.
Posté : 07 mars 2016, 17:09
par marih
il provient d'une base de données MySQL et est affiché pour choix par
<option> $Titre</option>
A+
Merci
Re: Pb des caractères accentués dans la nouvelle version de php.
Posté : 07 mars 2016, 19:40
par marih
Après tests ce n'est pas réglé du tout !
En effet lors de l'affichage des titres en provenance de la base de données il y a deux caractères le "à" et le "ç" qui réagissent à l'opposé. Je n'arrive pas à les obtenir bien écrits en même temps et cela se répercute sur la suite. C'est soit l'un soit l'autre !
le header semble régler d'un côté et perturber de l'autre.
je ne vois pas la solution pour le moment.
A+ ?
merci
Re: Pb des caractères accentués dans la nouvelle version de php.
Posté : 07 mars 2016, 20:18
par @rthur
Tu peux forcer l'encodage des caractères aussi des requêtes SQL :
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn);
As-tu vérifié dans phpmyadmin que les variables qui posent problèmes s'affichent bien ?
Car si elles s'affichent aussi différement dans phpmyadmin, je crois qu'il va falloir t’atteler à tout convertir en utf8, et là y a beaucoup de boulot.
Re: Pb des caractères accentués dans la nouvelle version de php.
Posté : 07 mars 2016, 21:43
par marih
Aïe AïeAïe...Mama mia !
je vais voir !
Re: Pb des caractères accentués dans la nouvelle version de php.
Posté : 08 mars 2016, 10:31
par marih
Bonjour @rthur,
j'enrage de ces upgrades qui ne tiennent pas compte de l'existant !
Quels dégâts et quel travail en perspective ! C'est fou !
Est-ce qu'on peut envoyer un avis aux concepteurs ?
En tout cas merci de ton aide.
A+
Re: Pb des caractères accentués dans la nouvelle version de php.
Posté : 08 mars 2016, 13:49
par @rthur
Il y a un tuto ici plutôt bien fait :
http://j-willette.developpez.com/tutori ... e-en-utf8/
A noter que ce changement ne vient pas de PHP mais d'un changement de configuration de ton serveur, donc les remontées sont à effectuer à ton hébergeur.
Normalement si ton hébergeur avait bien fait son travail, il aurait du te conserver ton ancien environnement fonctionnel, te mettre le nouveau à disposition pour que tu effectues tes tests de compatibilité et te laisser un temps raisonnable pour que tu puisses faire ta migration sans souci.
Re: Pb des caractères accentués dans la nouvelle version de php.
Posté : 08 mars 2016, 14:01
par marih
je suis bien d'accord avec toi. Je vais leur envoyer un message.
Merci de ton aide efficace et fort sympathique... comme toujours !
Amicalement
Re: Pb des caractères accentués dans la nouvelle version de php.
Posté : 08 mars 2016, 15:28
par marih
Le "tuto" est bien mais tous mes programmes sont en ISO, je n'ai pas envie (sauf obligation) de tout passer en "UTF". C'est une grosse perte de temps.
Qu'en penses-tu ?
Merci
Re: Pb des caractères accentués dans la nouvelle version de php.
Posté : 08 mars 2016, 19:54
par @rthur
Si tu as des caractères (par exemple les cédilles) qui ne passent pas alors que partout tu es en ISO-8859-1, c'est que ces caractères ne sont pas en ISO8859-1 d'où le besoin de les réencoder correctement ou de faire le ménage une bonne fois pour toute et de tout passer en utf8