За последние 24 часа нас посетил 49841 программист и 1757 роботов. Сейчас ищут 844 программиста ...

Изменить кодировку принимаемого XML

Тема в разделе "PHP для новичков", создана пользователем baxye, 8 фев 2016.

  1. baxye

    baxye Новичок

    С нами с:
    6 окт 2015
    Сообщения:
    12
    Симпатии:
    0
    через curl получаю XML, обрабатываю с помощью simplexml и вывожу результат в таблицу. Всё здорово, кроме того что результат передается в utf-8, а выводится в windows-1251. И вот вопрос - как перекодировать XML правильно?
    Пробую так:
    Код (Text):
    1.  
    2.     if( $curl = curl_init() ) {
    3.         curl_setopt($curl, CURLOPT_URL, 'http://server.ru/status.php');
    4.         curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
    5.         curl_setopt($curl, CURLOPT_POST, true);
    6.         curl_setopt($curl, CURLOPT_POSTFIELDS, 'xml='.$xml);
    7.         $out = curl_exec($curl);
    8.         curl_close($curl);
    9.        
    10.     }
    11.     $out = mb_convert_encoding($out,"windows-1251");
    12.     $dom = simplexml_load_string ($out);
    но после этого функция var_dump($dom->lang[0]); выдает NULL. Если убрать mb_convert_encoding, то выдает содержимое объекта.
    Как быть?
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Ты в XML заглядывал? Что в первых строках написано?
     
  3. baxye

    baxye Новичок

    С нами с:
    6 окт 2015
    Сообщения:
    12
    Симпатии:
    0
    написано
    Код (Text):
    1. <?xml version="1.0" encoding="utf-8"?>
    т.е. до simplexml изменить кодировку видимо не получится.
    А как тогда можно корректно изменить кодировку объекта на выходе simplexml?
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    видимо не получится из тебя программист.

    лучший вариант: отказаться от windows-1251 и перестать городить костыли.
    есть и другие пути, но не хочу подсказывать плохое )))
     
  5. baxye

    baxye Новичок

    С нами с:
    6 окт 2015
    Сообщения:
    12
    Симпатии:
    0
    а я и не стремлюсь стать программистом (не успеваю :) ), я решаю свои задачки.
    Увы вариант с отказом от этой кодировки не приемлем, поскольку вся CMS и база на кодировке windows-1251.
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    перекодировать всё в юникод и на время отложить головную боль с кодировками.