Кодировка символов UTF8 Проблема при использовании mb_detect_encoding () с PHP - PullRequest
2 голосов
/ 12 апреля 2011

Я читаю RSS-ленту http://beersandbeans.com/feed/

Каналы говорят, что это формат UTF8, и я использую simplepie rss для импорта контента Когда я беру контент и сохраняю его в $contentследующее:

<?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>

Затем получается:

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

Почему выводится?

Ответы [ 2 ]

2 голосов
/ 12 апреля 2011

Попробуйте не указывать "UTF-8, ISO-8859-1" и посмотрите, какую кодировку он вам дает. Возможно, он обнаруживает ISO-8859-1, потому что он последний в этом списке, а не фактическое кодирование строки.

0 голосов
/ 12 апреля 2011

Установите для строгого режима значение true в mb_detect_encoding(), см. http://www.php.net/manual/de/function.mb-detect-encoding.php#102510

Также попробуйте http://www.php.net/manual/de/function.mb-convert-encoding.php вместо iconv()

...