PHP include de la page html charset problème
après interrogation d'une base mysql à l'aide du code ci-dessous j'ai généré un fichier html:
$myFile = "page.htm";
$fh = fopen($monfichier, 'w') or die("impossible d'ouvrir le fichier");
fwrite($fh, $row['texte']);
fclose($fh);
Sur le msql db le texte est codé à l'aide de utf8_general_ci.
Mais j'ai besoin de l'inclure dans un code php de la page web comme indiqué ci-dessous:
<?include('page.htm');?>
en gardant à l'esprit que le php page web utilise le charset utf8 sur l'en-tête:
<meta http-equiv="content-type" content="text/html; charset=utf8" />
Maintenant, si j'écris sur la db certaines lettres avec accent grave (è à ì) ou un caractère de devis et j'ouvre directement page.htm et sur la db, je vois tout en regardant ok, mais quand je l'ai vue sur la page php, je vois un point d'interrogation � caractère au lieu de ceux que je voulais.
Pourquoi?!
Merci à l'avance!
OriginalL'auteur EnneKappa | 2010-07-01
Vous devez vous connecter pour publier un commentaire.
META charset n'est pas toujours de résoudre le problème. Assurez-vous que votre IDE économie réelle les fichiers UTF-8. Pour exanple dans Dreamweaver appuyez sur CTRL-J puis vérifiez Titre/options d'Encodage.
OriginalL'auteur fabrik
Le problème est que l'encodage de la page html est en fait défini par la tête de réponse http "Content-Type", pour corriger ce que vous devez faire est d'ajouter les lignes suivantes à votre fichier PHP avant toute sortie (c'est à dire en haut).
Pour clarifier, qui devrait être dans le PHP qui inclut votre fichier html, pas dans le fichier html vous 🙂
côté point(s):
OriginalL'auteur nathan
J'ai résolu en ajoutant cette
header('Content-Type: text/html; charset=iso-8859-1');
dans le php de la page web avec le comprennent.Je ne sais pas pourquoi cela fonctionne. Je n'ai jamais utilisé l'iso-8859-1 jeu de caractères.
Merci quand même!
Si ça marche, et pas de charset=utf-8, alors votre document d'encodage était probablement pas en UTF-8.
OriginalL'auteur EnneKappa
Si vous êtes plus de choses à partir d'une base de données, et il change le charset inexplicitly, note qu'en Php pour la connexion réelle charset de la db doit être définie de manière explicite à l'utf8 (si c'est ce que vous utilisez), sinon le contenu est converti tout viré, même si le contenu dans la base de données elle-même est dans le bon format.. un intéressant caprice 😉
Comme suit:
mysql_select_db($database, $connect);
mysql_set_charset('utf8', $connect); //défini la connexion charset.
OriginalL'auteur ChrisW
Le problème est probablement avec un mauvais encodage dans une base de données mySQL, ou la connexion de base de données.
Si vos tables sont toutes 100%
utf8_general_ci
, essayez de faire unemysql_query("SET NAMES utf8;");
avant de faire toute question: Qui va définir la connexion de l'UTF-8.Il n'y a pas de solution probable pour un médicament générique UTF-8. Les en-têtes, de contenu, de s'échapper en HTML versus échapper en JSON rapport à s'échapper dans les champs d'entrée contre échapper à METTRE en rapport échapper dans MySQL -- il n'y a pas une seule chose de vraiment regarder.
OriginalL'auteur Unicron
Un point sur votre code:
lorsque vous utilisez comprendre, c'est un bout de code php, de sorte que vous devriez inclure un fichier php, pas un fichier htm:
essayer de changer l'extension, je ne sais pas comment votre code de travail ont été jusqu'à maintenant 🙂
OriginalL'auteur Hamed MP
Essayer
séparer inclut des blocs.
Ex mainpage.php:
OriginalL'auteur nimura