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

1

Программное обеспечение генерирует мне 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
    Пожалуйста, объясните, почему другие решения не сработали.
  • 0
    Отредактированный немного, я действительно не знаю, почему это не работает ..
Показать ещё 4 комментария
Теги:
utf-8
encoding
windows-1252

1 ответ

1
Лучший ответ

Как показано в этом вопросе о переполнении стека, символ евро преобразуется в символ евро- латинского-1, а не "правильный" код UTF-8. utf8_decode для него является 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;
  • 0
    Я действительно не знаю, как я могу получить кодировку ..
  • 0
    Где вы видите в размере € ?
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню