Вопрос любителям перла и юникода
Feb. 8th, 2006 04:25 pmБерем xml файл
====================================================
<?xml version="1.0" encoding="UTF-8"?> <root> <p>«English Text»</p> <p>«Русский текст»</p> </root>====================================================
берем скрипт
====================================================
#!/usr/bin/perl
use strict;
use XML::DOM;
my $parser = new XML::DOM::Parser;
my $doc = $parser->parsefile ('test.xml');
$doc->printToFile ('result.xml');====================================================На выходе теряем кавычки в английском тексте
====================================================
<?xml version="1.0" encoding="UTF-8"?> <root> <p>English Text</p> <p>«Русский текст»</p> </root>====================================================
Если смотреть на файл результата в кодировке KOI-8
====================================================
<?xml version="1.0" encoding="UTF-8"?> <root> <p>╚English Text╩</p> <p>б╚п═я.я.я.п╨п╦п╧ я.п╣п╨я.я.б╩</p> </root>====================================================
То видно, что кавычки не то чтобы совсем теряются, а просто отображаются каким-то другим символом, который в последствии при открытие файла нормальным utf-8 редактором игнорируется...
Можете ли вы это как-то конструктивно прокомментировать... Чья это проблема? Перла, XML::DOM'а? Куда копать?
У меня perl v5.8.4 XML::DOM v1.43. Какие еще версии привести -- я не знаю...
Приведенные выше текста можно быстро скачать здесь
http://shaplov.ru/files/utf-8_PerlTest.tgz
чтобы не мучатся с копипастом.