Encodage UTF-8 ?

Petit nouveau ! | 2 Messages

28 sept. 2016, 00:01

Bonjour,

Je viens de mettre à jour ma version de php et un de mes anciens sites que je gardais en archive ne m'affiche plus les caractères accentués. Les pages affichent des caractères de ce type : "�"

Voici mon site : http://luce-pasquini.fr/blog/index.php

J'ai bien changé cela dans mon header :
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

J'ai également ajouté cela avant la connexion à la BD :

Code : Tout sélectionner

mysql_set_charset( 'utf8' );
et j'ai ajouté ça avant les requêtes :

Code : Tout sélectionner

$query="SET NAMES UTF8 ;";
J'ai également enregistré index.php en utf-8 (enfin je pense) et j'ai appliqué cette requête sur la BD :

Code : Tout sélectionner

ALTER TABLE `ma_table` CHANGE CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Mais ça ne fonctionne toujours pas.
Une idée ?

Merci pour votre aide. :)

Eléphanteau du PHP | 25 Messages

28 sept. 2016, 10:37

Bonjour,

Pour l'utf8, il faut contrôler toute la chaîne :
1) Que tous vos fichiers soient enregistrés en UTF8 Sans BOM, ce qui semble fait, mais reste à contrôler.
2) Que PHP soit configuré dans le php.ini pour prendre en charge l'UTF8 par défaut.
3) Que Apache ou IIS soit configuré pour prendre en charge l'UTF8 par défaut (fichier de configuration de préférence sinon .htaccess ou .webconfig pour IIS)
4) Que votre base de données soit configurée en UTF8 ou dans une collation compatible. Idem pour les tables.

Si toutefois vous changez la collation d'une table qui avait initialement une collation non compatible ou différente, sachez que les collations peuvent être définies au niveau colonne d'une table. De plus si la collation précédente n'était pas compatible ou que la conversion des données existantes dans la nouvelle collation ne s'est pas effectuée correctement, il faudra mettre à jour vos données de chaque table concernée.

Vous pouvez ensuite et en dernier ressort, selon vos contraintes, effectuer la conversion explicitement au niveau de PHP lors de l'affichage à l'aide des fonctions utf8_encode() et utf8_decode().

Bonne journée.
Architecte de données & applications web
MCSE Data Management & Analytics

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 sept. 2016, 10:43

salut,

a priori ton site est en Windows-1252 et non en utf-8 dy coup tu n'indiques pas le bon charset et ça déconne.

si le version de php fait cela c'est que l'encodage par défaut à du passer en utf-8 mais tu peux le modifier en passant default_charset = "UTF-8" à default_charset = "Windows-1252" le tout dans un fichir .htaccess ou php.ini local
plus d'info ici http://php.net/manual/fr/configuration.changes.php

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 2 Messages

28 sept. 2016, 20:30

Merci pour vos réponses ! :D
Je regarde ça...