Problème accents suite à mise à jour de PHP

Eléphant du PHP | 164 Messages

08 mars 2016, 23:26

Bonjour,

Je viens ici car je désespère de trouver une solution à mon problème.

J'ai passé mon site de PHP4.4 à PHP5.6 ... il était temps !

Hors mis quelques fonctions qui n'étaient plus prises en compte, j'ai un GROS soucis que je n'arrive à résoudre.

Sur la partie "publique" du site, aucun problème, les visiteurs peuvent lire normalement les textes. Par contre côté admin ... j'ai tous mes accents remplacés par des ?. Ce sont les mêmes texte qu'en partie publique bien entendu.

Pour info :
serveur en default_charset : UTF-8
champs de la BDD en utf8_general_ci
navigateur en unicode par défaut
pages avec header ('Content-type:text/html; charset=utf-8');
Si j'enregistre "été" dans un formulaire et que je valide, dans la BDD j'obtiens "été".

Pourquoiiiiiiiiiiiii #-o #-o #-o
HELP 8-|

A préciser qu'avant la mise à jour tout fonctionnait nickel !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 mars 2016, 10:30

Dans le code HTML de ta page, tu n'aurais pas une balise <meta> qui indique un charset différent ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 164 Messages

09 mars 2016, 14:41

Non

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 mars 2016, 17:33

Bah c'est que forcément tu as une incohérence quelque part.
Ça peut être sur ta page d'affichage ou sur ta page où est le formulaire d'insertion où tu as l'un des 3 éléments qui n'est pas en UTF8 : header HTTP, meta HTML, connexion BDD
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 164 Messages

09 mars 2016, 20:39

Toutes les pages à problème commencent, comme les autres, par

Code : Tout sélectionner

<?php session_start(); header ('Content-type:text/html; charset=utf-8');
et la base de donnée est bien en utf8 #-o

Mammouth du PHP | 2703 Messages

09 mars 2016, 20:41

quel est l'encodage du fichier php, visible dans ton éditeur de texte ?

Eléphant du PHP | 164 Messages

09 mars 2016, 21:27

Codage par défaut : Unicode (UTF-8)
Cela pourrait influencer sur comment afficher un résultat de BDD ?
Car je rappelle que certaines pages du site fonctionnent et d'autres pas #-o en piochant sur les mêmes tables !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 mars 2016, 22:31

Repars d'une page blanche et fait des tests pour voir quand ça marche et quand ça ne marche pas
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 164 Messages

09 mars 2016, 22:34

J'ai même tenté de refaire un copier coller sur un nouveau document mais ça ne change rien.

J'ai testé un

Code : Tout sélectionner

<?php echo $_SERVER['HTTP_ACCEPT_CHARSET']; ?>
sur le serveur et il ne ressort aucun résultat !
Tu crois qu'un .htaccess changerait les choses ?

Eléphant du PHP | 164 Messages

09 mars 2016, 23:02

Je viens de placer ceci

Code : Tout sélectionner

if (!mysqli_set_charset($link, "utf8")) { printf("Erreur lors du chargement du jeu de caractères utf8 : %s\n", mysqli_error($link)); } else { printf("Jeu de caractères courant : %s\n", mysqli_character_set_name($link)); }
et cela m'affiche :
Erreur lors du chargement du jeu de caractères utf8 :

Eléphant du PHP | 164 Messages

09 mars 2016, 23:06

et avec ceci :

Code : Tout sélectionner

$charset = mysqli_character_set_name($link); printf ("Jeu de caractères courant : %s\n",$charset);
J'obtiens :
Jeu de caractères courant :



Du coup j'ai rajouté dans mon fichier de config ceci :

Code : Tout sélectionner

ini_set('default_charset', 'utf-8');
et en rechargeant ma page ... horreur ! ceci :
Jeu de caractères courant : latin1
Mais ... comm... pourquoi ?????? !!!!!!

Eléphant du PHP | 164 Messages

11 mars 2016, 00:55

Sinon pour info dans mysql j'ai tapé

Code : Tout sélectionner

SHOW VARIABLES LIKE 'character%'
et j'obtiens :
character_set_client : utf8
character_set_connection : utf8
character_set_database : utf8
character_set_filesystem : binary
character_set_results : utf8
character_set_server : utf8
character_set_system : utf8
character_sets_dir : /usr/share/mysql/charsets/

Eléphant du PHP | 164 Messages

12 mars 2016, 00:16

HELP !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

12 mars 2016, 03:06

Tu pars dans tous les sens à essayer de patcher à droite à gauche sans vraiment savoir ce que tu fais.

Mon conseil est toujours le même : repars d'un script vide (page blanche), ajoute une connexion mysql basique sans rien déclarer d'autre, et ensuite modifie les paramètres un par un pour trouver les conditions qui vont faire que ça va fonctionner.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 164 Messages

12 mars 2016, 04:35

OK je tente ça ;)