Problème d'encodage dans mon PHP

Fermé
Ruka - 20 juin 2013 à 10:23
 Dingo_A_pris_Monbebe - 20 juin 2013 à 17:30
Bonjour,


Alors voilà, j'ai un site avec du HTML5 mais aussi du PHP. Mon problème est due à l'encodage.
En ce qui concerne le HTML5, c'est bien encodé en UTF-8 mais pour ce qui est du PHP, tous mes caractères sont en 'point d'interrogation'..
Tout se passe dans une même page PHP. J'ai remarqué que lorsque je mettais ma page PHP en encodage ANSI, les caractères en 'point d'interrogation' (donc sur le php) redevenait des caractères normaux tandis que le reste de la page (en html5) devenait des "é". Après tout c'est normal car j'ai retiré l'UTF-8 pour du ANSI, mais ce qui est étrange c'est que les caractères en 'point d'interrogation' redevienne normaux..

Alors j'aimerais savoir si vous savez comment fait-on pour mettre un code PHP en UTF-8 s'il vous plait.
A voir également:

4 réponses

Pierrecastor Messages postés 41466 Date d'inscription mercredi 5 novembre 2003 Statut Modérateur Dernière intervention 5 avril 2024 4 129
20 juin 2013 à 10:24
Salut

De la même façon que pour l'html, en déclarant l'encodage dans le header.
0
Si c'est de cette façon là :
<?php
header('Content-type: text/html; charset=UTF-8');
?>

Ca ne fonctionne pas.. :s
0
Pierrecastor Messages postés 41466 Date d'inscription mercredi 5 novembre 2003 Statut Modérateur Dernière intervention 5 avril 2024 4 129
20 juin 2013 à 10:29
Heu, le headeur, il n'est pas en php, mais en HTML, sois tu le laisse en HTML au début du fichier, sois tu le recrée avec des echo. Mais la, ç'est normal que ca ne marche pas.
0
Pourrais-tu me l'écrire s'il te plait, je ne vois pas trop ce que tu veux dire.
0
Pierrecastor Messages postés 41466 Date d'inscription mercredi 5 novembre 2003 Statut Modérateur Dernière intervention 5 avril 2024 4 129
Modifié par Pierrecastor le 20/06/2013 à 10:44
Tu met le même header que ton fichier HTML, Qui contiendra cette ligne, entre autre.


Tu met le même header que ton fichier HTML, Qui contiendra cette ligne, entre autre.



<head>

< meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

(Sans l'espace avant le meta)

Tu débute en dev web ?



Tu débute en dev web ?

Quant à ces féroces soldats, je le dis, c'est pas pour cafter,
mais y font rien qu'a mugir dans nos campagnes.
-Pierre Desproges-
0
Non ça fait 3ans que je développe en web, mais pour ce qui est de l'encodage, j'ai déjà eu des soucis que je n'ai jamais pu résoudre. D'habitude j'utilisais les caractères "Ã ©" pour remplacer les caractères à accent, mais là il y en a trop et je ne pourrais pas tous les remplacer donc faut que je résolve ce problème.

Ma page PHP comporte ceci :

<?php
header('Content-type: text/html; charset=UTF-8');
include 'includes/head.php'; <!-- ceci est mon head donc tout ce qui concerne les balises meta et tout.. -->
?>

donc mon head est un fichier PHP et non HTML, ça pose soucis?
ps: ce que tu as écris, je l'ai déjà écrit, ça fonctionne, mais ça concerne que le HTML. Le PHP ne reconnait pas la l'UTF-8 présent dans mon head.php.
0
Pierrecastor Messages postés 41466 Date d'inscription mercredi 5 novembre 2003 Statut Modérateur Dernière intervention 5 avril 2024 4 129
20 juin 2013 à 11:02
3 ans de dev web et tu essaye de mettre du HTML directement dans du php ????!


dans des balise php, on met du php, pas de l'HTML, si tu veut passer absolument par du php, il faut afficher avec echo.

Ou alors mettre le header avant tes balise php.

Un fichier php, en web, ce n'est qu'un fichier html avec des bouts de code php entre balise, mais tu peut mettre du html dedans sans soucis.
Tu peut mettre le contenu de ton head.php ?
0
Ah je comprend mieux, je vais essayer de mettre un echo alors, merci. Le PHP je ne suis pas encore une bête, j'ai encore beaucoup à apprendre. Mais là c'est différent, je n'ai jamais mis de l'UTF-8 dans du PHP. En tout cas, je te remercie beaucoup de prendre du temps pour moi.

head.php :

<!DOCTYPE html>
<html>
<head>
<title>mon titre</title>
<meta name="description" content="description" />
<meta name="keywords" content="des mots" />
<meta name="author" content="Ruka Nizuka" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" type="images/x-icon" href="../images/ressources/k.ico" />
<link rel="stylesheet" href="css/style.css" />
<link rel="stylesheet" type="text/css" href="css/demo.css" />
<link rel="stylesheet" type="text/css" href="css/style1.css" />

<!-- START VISITE GOOGLE -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-33224961-1']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<!-- END VISITE GOOGLE -->

<!-- START LIKE FACEBOOK -->
<div id="fb-root"></div>
<script>
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/fr_FR/all.js#xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<!-- END LIKE FACEBOOK -->

</head>
0
Pierrecastor Messages postés 41466 Date d'inscription mercredi 5 novembre 2003 Statut Modérateur Dernière intervention 5 avril 2024 4 129
20 juin 2013 à 11:40
Ok, donc normalement, en faisant un simple include :

<?php
include 'includes/head.php'; <!-- ceci est mon head donc tout ce qui concerne les balises meta et tout.. -->
?>

Ca devrait le faire.

Tu as bien sur vérifié que ton fichier texte est bien en UTF-8 lui aussi. ;-)
0
J'ai tout essayé et rien ne fonctionne. Merci d'avoir essayé de m'aider. Bonne journée.
0
Salut,

Ouvre tes fichiers php avec Notepad++ et vérifie dans le menu Encodage que la ligne activée est "Encoder en UTF-8 (sans BOM)".

Si la ligne "Encoder en ANSI" est activée, alors clique sur la ligne "Convertir en UTF-8 (sans BOM)".

Bonne journée
0
Dingo_A_pris_Monbebe
20 juin 2013 à 17:30
Salut, il faut faire une différence entre 4 chose :

L'encodage de ton fichier (html, ou php ou js .......)
L'encodage du header (que tu demande au navigateur d'utiliser)
L'encodage de l'IDE ou l'éditeur que tu utilise pour éditer ton fichier
L'encodage du navigateur que le visiteur peux changer (utf-8 par default)

Pour ne pas avoir des problème de caractères il faut que tu utilise le même encodage partout, L'utf-8 sans BOM reste le meilleur choix.

Si les encodages sont différents tu risque fort de tomber sur des points d'interrogation ou des caractère bizarre

Salutations
0