ISO-8895-1 до XML приемлемый UTF-8 - PullRequest
1 голос
/ 21 октября 2010

Я анализирую текст / html с веб-страниц в фиде xml, текст / html кодируется iso-8895-1, в то время как фид XML должен быть UTF-8. Я использовал html-сущности, но мне приходится вручную заменять множество символов, вот что я имею до сих пор (все еще не разбираю весь текст)

$desc = str_replace(array("\n", "\r", "\r\n"),"",$desc);
    $desc = str_replace(array("’","‘","”","“"),"'",$desc);
  $desc = str_replace("£","£",$desc);
    $desc = str_replace("é","é",$desc);
    $desc = str_replace("²","2",$desc);
    $desc = str_replace(array("-","•"),"‐",$desc);
$desc = htmlentities($desc, ENT_QUOTES, "UTF-8");

Ответы [ 2 ]

6 голосов
/ 21 октября 2010

Использование iconv(). Это также позволит вам использовать нативные символы в UTF-8 - нет необходимости в HTML-сущностях.

$data = iconv("ISO-8859-1", "UTF-8", $text);

при кодировании из UTF-8 в другой набор символов используйте IGNORE или TRANSLIT для удаления или транслитерации непереводимых символов.

альтернативно, функции mb_*, показанные @Gumbo, также будут работать.

1 голос
/ 21 октября 2010

Вы также можете использовать utf8_encode или mb_convert_encoding:

$desc = utf8_encode($desc);
// OR
$desc = mb_convert_encoding($dest, 'UTF-8', 'ISO-8859-1');

Оба преобразуют кодировку из ISO 8859-1 в UTF-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...