Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > хэш и кодировка.


Автор: mastercz 6.11.2008, 04:29
Помогите разораться.

Парсирую XML с помощью XML::Simple. В результате получаю хэш хэшей с кодировкой UTF-8
Существуют ли готовые решения для замены кодировки в хэше. 

Или как пропарсировать все дерево и заменитть кодировку.
Существеено, что дерево хэша не имеет жесткой структуры (может быть любым).

заранее спасибо за ответ.


Автор: KSURi 6.11.2008, 05:24
Эээ, а может попробовать сменить кодировку у XML, а не в структуре?

ЗЫ: "парсирую" прикольное слово)

Автор: rcdimon 6.11.2008, 19:17
Я кстати пробовал сменить сначала кодировку у файла, а потом уже парсить- у меня ошибка вылетала. Пришлось сначала парсить, а перед работой с полученными данными перекодировать их. Отдельно, кажный элемент.

Автор: vadiml 6.11.2008, 21:52
rcdimon, 
> пробовал сменить сначала кодировку у файла, а потом уже парсить- у меня ошибка вылетала

Значит был какой-то символ, отсутствующий в целевой кодировке
то, что Вы уже разобрали XML дело не улучшит, 
можно сначала изьять все символы, которых в получаемой кодировке нет,
и после спокойно перекодировть сразу весь файл.

Автор: KSURi 7.11.2008, 01:14
Я имел ввиду сменить перекодировать переменную, где находится еще не парсенный XML.

Автор: sir_nuf_nuf 7.11.2008, 12:25
KSURi, кстати, не все так просто..
Парсеры XML извлекают информацию о кодировке из заголовка XML
<? xml version="1.0" encoding="CP1251" ?>
Так что нужно ее еще и тут будет поменять. Если заголовка нет, то по умолчанию кажется UTF8..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)