Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Как узнать кодировку SimpleXMLElement
как видите объекты не отличаются, а xml отличается только кодировкой
Вопрос: как определить кодировку файла XML распарсеного в SimpleXML?
(изврат с генерацией xml и уже из него получать кодировку не подходит)
Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2012
Помог: 0 раз(а)
Мелкий пишет:
Для чего вам исходная кодировка?
SimpleXML возвращает только UTF8, если XML в другой кодировке объявлен - сам конвертирует.
http://www.php.net/manual/ru/ref.simplexml.php#79258
я знаю что в SimpleXML всегда UTF-8. А вот исходный xml может быть любой.
соответственно если я в объект SimpleXMLElement хочу внести изменение, то мне надо знать в какой кодировке будет xml файл.
для примера можете взять файл в utf
распарсить его через SimpleXML, изменить какой нибудь элемент записав в него данные в кодировке cp1251, и опять верните его в xml.
на выходе получите чушь в измененном элементе.
Мелкий
Отправлено: 02 Августа, 2012 - 12:31:21
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
HDMan пишет:
я знаю что в SimpleXML всегда UTF-8
HDMan пишет:
записав в него данные в кодировке cp1251
И вы удивляетесь, почему в итоге что-то странное?
----- PostgreSQL DBA
HDMan
Отправлено: 02 Августа, 2012 - 12:36:50
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2012
Помог: 0 раз(а)
ну так чтобы знать в какой кодировке туда писать надо знать в какой кодировке там данные.
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Зачем вам кодировка?
SimpleXML предоставляет только UTF8 интерфейс, инкапсулирует кодировки и в UTF8 и надо работать.
Если исходный XML в cp1251, изменить свойство (используя UTF8), и записать файл обратно - XML будет всё ещё в cp1251 и с корректным cp1251 (если это, конечно, вообще возможно) изменённым свойством.
----- PostgreSQL DBA
HDMan
Отправлено: 02 Августа, 2012 - 12:45:22
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2012
$xml->channel->title=mb_convert_encoding('Новое название канала',"utf-8",$code);
$newxml=$xml->asXML(); \\ и этот файл я уже могу записать или сделать с ним еще чегонибудь
так вот ищу функцию КакаятоНеизвестнаяМнеФункция или метод для работы с классом или объектом, которая позволит узнать в какой кодировке будет создан файл $newxml
Мелкий
Отправлено: 02 Августа, 2012 - 12:47:08
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
$newxml=$xml->asXML(); \\ и этот файл я уже могу записать или сделать с ним еще чегонибудь
----- PostgreSQL DBA
HDMan
Отправлено: 02 Августа, 2012 - 12:47:55
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2012
Помог: 0 раз(а)
Мелкий пишет:
Если исходный XML в cp1251, изменить свойство (используя UTF8), и записать файл обратно - XML будет всё ещё в cp1251 и с корректным cp1251 (если это, конечно, вообще возможно) изменённым свойством.
как узнать посредством PHP в какой кодировке исходный xml? (Добавление)
$newxml=$xml->asXML(); \\ и этот файл я уже могу записать или сделать с ним еще чегонибудь
так будет работать правильно только если кодировка xml и шашего сайта совподают.
если у вас cp1251. а файл на UTF-8. то будут кракозябры.
Мелкий
Отправлено: 02 Августа, 2012 - 12:56:00
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
HDMan пишет:
так будет работать правильно только если кодировка xml и шашего сайта совподают.
Так будет работать с любой известной SimpleXML кодировкой XML-документа и скриптом в UTF-8.
Если с какого-то перепуга ваш скрипт всё ещё не в UTF8 - это, в общем-то, ваши проблемы. SimpleXML работает в UTF8.
----- PostgreSQL DBA
HDMan
Отправлено: 02 Августа, 2012 - 13:04:15
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2012
Помог: 0 раз(а)
Мелкий пишет:
Так будет работать с любой известной SimpleXML кодировкой XML-документа и скриптом в UTF-8.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.