Почему при записи на экран вместо пробела отображается `á` (проблема с кодированием)? - PullRequest
0 голосов
/ 17 июня 2011

Я полностью заблудился из-за проблем с кодировкой, я понятия не имею, что происходит, в чем конкретно проблема и как ее исправить.

По сути, я просто пытаюсь прочитать HTML-файл из Zip-файла, проанализировать его и затем вывести части в XML. Теперь что-то странное происходит с текстом, который я получаю из парсера.

При разборе HTML вместо пробела я получаю á, только если я пишу на экран. Если я сохраню его в переменной и запишу в файл, он будет хорошо выглядеть в файле. Однако даже если в XML это выглядит правильно, с ним что-то не так, мой синтаксический анализатор PHP не может разобрать этот XML, и, похоже, IE это не нравится.

Сначала нужно было mb_convert_encoding($xmlcontent, "ASCII");, чтобы я мог получить этот XML для анализа в PHP.

Есть идеи, в чем моя проблема?

  1. извлечение HTML из .tar.gz файла с использованием Perl

    my $tar = Archive::Tar->new;
    $tar->read("myfile.tar.gz");
    $tar->extract_file('index.html', 'output.html');
    
  2. загрузить HTML, вот тут-то и начинает становиться фанк, я получаю вывод вроде Numberáofásourceálines

    my $tree = HTML::TreeBuilder->new;
    $tree->parse_file('output.html') or die $!;
    $tree->elementify;
    
  3. запись в XML

    my $output = new IO::File(">output.xml");
    my $writer = new XML::Writer(OUTPUT => $output, DATA_MODE => 1,DATA_INDENT => 2);
    

Ответы [ 2 ]

1 голос
/ 17 июня 2011

Если он выглядит правильно, когда вы записываете его в файл, и неправильно, когда вы записываете его в терминал, похоже, ваш терминал ожидает неправильную кодировку.Проверьте настройки терминала. '

Также см. Ответ Джона Роквея на «Почему современный Perl по умолчанию избегает UTF-8?» .С помощью кодировок вы должны преобразовать свой ввод в правильную кодировку и преобразовать свой вывод в правильную кодировку.Все, что просматривает данные, должно знать, какую кодировку вы используете.

0 голосов
/ 17 июня 2011

Я думаю, что я только что исправил это, обработав это в html перед его разбором, спасибо за все замечательные указатели!

s/\&nbsp\;/ /g;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...