2 votes

Problème de codage des caractères UTF8 lors de l'utilisation de mb_detect_encoding() avec PHP

Je lis un flux rss http://beersandbeans.com/feed/

Le flux indique qu'il s'agit d'un format UTF8, et j'utilise Simplepie Rss pour importer le contenu. $content J'effectue les tâches suivantes :

<?php
header ('Content-type: text/html; charset=utf-8');
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head><body>
<?php
echo $content;
echo $enc = mb_detect_encoding($content, "UTF-8,ISO-8859-1", true);
echo $content = mb_convert_encoding($content, "UTF-8", $enc);
echo $enc = mb_detect_encoding($content, "UTF-8,ISO-8859-1", true);
?>
</body></html>

Cela donne alors :

..... Camping:     2,000isk/day for 5 days) = $89 .....
ISO-8859-1
..... Camping: Â  Â           2,000isk/day for 5 days) = $89 .....
UTF-8

Pourquoi le résultat est-il le même ?

2voto

Griff Points 125

Essayez de ne pas spécifier "UTF-8,ISO-8859-1" et voyez quel encodage il vous donne. Il se peut qu'il détecte ISO-8859-1 parce que c'est le dernier de la liste, plutôt que l'encodage réel de la chaîne.

0voto

Tobiask Points 3106

Définir le mode strict à true dans mb_detect_encoding() voir http://www.php.net/manual/de/function.mb-detect-encoding.php#102510

Essayez aussi http://www.php.net/manual/de/function.mb-convert-encoding.php au lieu de iconv()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X