Как конвертировать символ евро (€) из Windows-1252 в UTF-8?

Программное обеспечение генерирует мне XML-файл Windows-1252, и я хотел бы проанализировать его в PHP и отправить данные из моей базы данных в UTF8.

Я перепробовал много решений, таких как Iconv или же utf8_encode функции, но нет результата.

Он отображает такие вещи, как €, но не только

Мой XML-файл выглядит так:

<?xml version="1.0" encodoing="Windows-1252" standalone="yes"?>
<node>The price is 12 &#128; !</node>

&#128; похоже код евро (евро) в Windows-1252.

Я попробовал эти функции:

<!doctype html>
<html lang='fr'>
<head>
<meta charset='UTF-8'>
</head>

<body>

<?php
// XML Loading in DOM Document
// Parsing XML Node

/* Not working */
$node = iconv('Windows-1252', 'UTF-8', $nodeValue);

/* Not working */
$node = utf8_encode($nodeValue);
?>

</body>
</html>

1

Решение

Как показано в этом Вопрос переполнения стека символ евро преобразуется в Латинская-1 дополнения евро символ, а не «правильный» код UTF-8. Обойти это можно utf8_decode и затем «перекодировать» снова:
$ node = iconv (‘Windows-1252’, ‘UTF-8’, utf8_decode ($ node));

Итак, пример кода, который работает:

<?php
$xml = '<?xml version="1.0" encoding="Windows-1252" standalone="yes"?>
<node>The price is 12 &#128; !</node>';

$doc = new DomDocument();
$doc->loadXML($xml);
$nodes = $doc->getElementsByTagName('node');
$node = iconv('Windows-1252', 'UTF-8', utf8_decode($nodes[0]->nodeValue));
echo $node;
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]