Problème encodage Arabe UTF-8 UNICODE

smed_79 Messages postés 1793 Statut Contributeur -  
mpmp93 Messages postés 7217 Statut Membre -
Bonjour,

Pour récupérer le titre "title" d'un site distant en php j'utilise le code :

<?php 
$site = 'http://'.$url;
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTMLFile($site);
libxml_clear_errors();
$title = $doc->getElementsByTagName('title')->item(0);
?>

<?php echo $title->nodeValue; ?>

Pas de probleème avec les caractères latins (abc...xyz) contrairement à la langue arabe qui n'ai pas afficher corectemment :

voir cette image : http://uppix.net/a/a/2/5cdfe1714a9e546d0ce5c8aa86404.jpg

Merci pour votre aide.


A voir également:

1 réponse

bibi_6919 Messages postés 131 Statut Membre 19
 
Il faut que tu mette une balise méta dans le head avec le charset dedans et met un UTF-8 ou sinon regarde sur le net.
0
smed_79 Messages postés 1793 Statut Contributeur 844
 
Merci pour votre répance mais la balise utf-8 et déjà la ! qsq tu veux que je regard sur le net ?!!!!
0
mpmp93 Messages postés 7217 Statut Membre 1 340
 
Bonjour,

1) QUESTION: est-ce que le problème persiste avec une page en russe? Essayer par exemple de charger www.cartoon.ru et me dire si l'encodage est bien récupéré ou non...

2) une proposition de solution, dans le code, je vois ceci:

$doc->loadHTMLFile($site);


Mon idée:

$page = file_get_contents($site);
$page = utf8_encode($page);


et plus loin:

$doc->loadHTML($page);


Je ne garantis pas que ça marche. Il faut en effet que la page d'origine (celle qu'on essaye de charger) soit BIEN ENCODEE en UTF8.

Voir ici comment détecter le bon encodage d'une page web:

http://html5.immo-scope.com/index.php?page=general/applisFullUtf8

vers la fin il est expliqué (avec Firefox) comment tester l'encodage de la page du site que l'on veut charger.

L'autre solution est de regarder le code source de la page que l'on veut charger et vérifier si la balise META est bien présente.

A noter que cette balise n'est pas forcément nécessaire si la page du site que l'on veut charger envoie un header d'encodage comme ceci:

header('Content-type: text/html; charset=UTF-8');


A+
0