Bonjour à tous. Voici mon problème :

1) J'ai voulu commencer à me faire un site web perso "pour le fun", j'ai donc pris un hébergeur gratuit pour commencer. J'ai donc créé quelque pages tout allait bien, les infos que je récupérais de ma DB étaient correctement encodées (les accents apparaissaient correctement, aucun soucis).

2) J'ai ensuite pris un hebergement payant (si sa peut aider à la résolution du problème, c'est verygames, ce n'est pas pour puber - le gratuit étant livehost- ) et là c'est la que le problème est apparu.
Je m'explique : les informations récupérées depuis ma DB sont encodées et s'affichent "normalement" (les accents trémas etc sont OK) mais mon code que je fais afficher depuis mon document php (ex : <p> Prénom : <php echo $user_prenom ; ?> </p> ) ne s'affichent pas normalement .
Dans l'exemple $user_prenom s'affiche correctement mais "Prénom" non, et ceci ce passe pour tout ma page. Je vous link une image pour un exemple mieux expliqué que mes mots Smiley langue
upload/56957-illustrati.png

Merci pour vos réponses

PS : j'ai bel et bien une balise <meta charset="utf-8"> dans mon entête html, et j'utilise Sublime Text 3 qui après quelque recherches encode ses fichiers (apparemment) en UTF-8 sans BOM ce qui est apparemment une bonne chose.
Cela semble vouloir dire que la base de donnée est bien codée en UTF-8 mais pas les fichiers php.

Après une longue discussion sur ce forum il y à quelques mois, j'ai compris qu'il était préférable d'utiliser un éditeur de texte qui supporte le codage UTF-8 pour éditer les fichiers php.
En effet les caractères ASCII7 qui sont seuls utilisés dans les ordres et noms de variables sont codés à l'identique en UTF-8. Par contre les chaînes de caractères entre guillemets peuvent contenir des caractères accentués, voire des caractères russes ou grecs et seront correctement codés et transmis au code HTML généré par le php.

Depuis cette "découverte" j'ai modifié tous mes fichiers php pour en tenir compte et je m'en trouve bien mieux.
À noter que cela peut demander quelques modifications de programme, en particulier les encodage/décodages. UTF-8.

ATTENTION: la BOM (un caractère UTF-8 de 16 bits "invisible") que certains éditeurs UTF-8 mettent en tête des fichiers codes UTF-8 ne doit pas être utilisée pour les fichiers php. En effet l'interpréteur php envoie la BOM au client, et il n'est plus possible alors à l'intérieur du programme php d'envoyer des headers, par exemple de modifier le contenu d'un cookie. Regarder comment faire dans les paramètres de l'éditeur et choisir l'option "sans BOM".
Modifié par PapyJP (17 Dec 2014 - 00:33)
Modérateur
Bonjour,

Fais un test en posant sur le serveur le script tout simple ci-dessous, et dis-nous si ça marche ou pas déjà.


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
Prénom<br>
<?php print "Prénom<br>";?>
</body>
</html>


Amicalement,
Modérateur
Bonjour,

Lorsque le "é" est remplacé par un "é" à l'affichage, cela veut dire que le "é" a bien été encodé en UTF-8 mais que le navigateur pense que la page est en ISO-8859-1 ou un de ses cousins.

Si par ailleurs, des données provenant d'une base de données sont quand même correctement affichées dans la page en question, il y a fort à parier qu'en fait, ces données ne sont pas en UTF-8 mais en ISO-8859-1 (deux erreurs donc qui s'annulent : 1) les données de la base de données sont en ISO-8859-1 et insérées dans la page dont le script a été encodé dans un fichier en UTF8, et 2) le navigateur croit que la page est en ISO-8859-1).

Pour un premier test rapide, forcez le navigateur via le menu "affichage", "encodage de caractères" à changer l'encodage de la page pour voir ce que ça donne.

EDIT : il est assez probable que ce soit le serveur qui fasse croire à ton navigateur que la page n'est pas en UTF-8 malgré tous tes efforts. Pour le vérifier, il faut regarder quel genre d'entête http envoie le serveur. Soit tu utilises les outils pour webmasters de ton navigateurs, soit tu vas à www.webrankinfo.com/outils/header.php et tu entres l'adresse de ton site : ça te donnera l'entête http envoyée par le serveur aux navigateurs lorsque ceux-ci essaient d'afficher ton site. Si tu vois une ligne du genre Content-Type: text/html; charset=ISO-8859-1, c'est là qu'est le problème et mettre un <meta charset="utf-8"> dans tes pages ne suffira pas à le régler.

Amicalement,
Modifié par parsimonhi (22 Dec 2014 - 21:46)
j'ai également parfois des trucs bizarre en uploadant un fichier , il semblerait que le client ftp n'envoie pas le fichier avec le bon encodage ?
Bonsoir,

Si tu utilises Filezilla, fait un clique droit sur le ficher distant puis afficher/editer.

Il t'ouvrira le fichier distant dans ton éditeur (notepad ++ par exemple) et tu pourras vérifier si l'encodage est bon.
Bonsoir à tous,
dans votre sens de réflexion, je pense avoir compris ceci :
1. même en utilisant le Bloc-notes pour la rédaction, il ne faut pas omettre d'y configurer l'enregistrement d'une page.htm :
upload/57133-utf-8.jpg
2. car la déclaration
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
dans l'écriture de la page.htm semblerait ne pas suffire pour faire figurer correctement des caractères spéciaux dans la value des input !
Modifié par senteur_honrable (31 Jan 2015 - 01:30)
senteur_honrable a écrit :
Bonsoir à tous,
dans votre sens de réflexion, je pense avoir compris ceci :
1. même en utilisant le Bloc-notes pour la rédaction, il ne faut pas omettre d'y configurer l'enregistrement d'une page.htm :
upload/57133-utf-8.jpg
2. car la déclaration
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
dans l'écriture de la page.htm semblerait ne pas suffire pour faire figurer correctement des caractères spéciaux dans la value des input !

Tout dépend effectivement de ce qui est stocké dans le fichier.
Si tu stockes dans un autre code que UTF-8, les caractères diacritiques seront stockés dans cet autre code, alors que le HTML dit que la page est en UTF-8. Il y a donc contradiction entre la déclaration HTML et le contenu réel du fichier.

Remarque: en HTML5 (fortement recommandé!) ça se dit
<meta charset="utf-8" />

Voici le début de toutes mes pages HTML:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
    <head>
        <!--[if lt IE 9]>    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]--> <!-- pour les vieux PC non remis à jour -->
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width" /> <!-- pour les tablettes -->

Modifié par PapyJP (01 Feb 2015 - 11:54)