специальные символы, генерируемые при использовании HTML :: TreeBuilder & HTML :: Element - PullRequest
0 голосов
/ 26 марта 2011

У меня два вопроса:

  • Если я вычеркну какой-либо текст с помощью функции text () или as_trimmed_text () и захочу вставить какой-нибудь элемент, тогда мне нужно использовать HTML :: Entities :: encode_entities? :

    my $text=$node->as_trimmed_text();
    
    $a->push_content($text);  # Do I need to use encode_entities here?
    
  • Во-вторых, после обработки и генерации всего HTML-документа с использованием as_HTML () иногда генерируются некоторые специальные символы, например: & Acirc; (Â) в качестве дополнительного символа, когда все, что я вижу, - это один пробел в Dreamweaver.

1 Ответ

2 голосов
/ 26 марта 2011

У меня есть два ответа:

  • Предполагая, что вы хотите, чтобы содержимое $a совпадало с содержанием $node, вам не нужно encode_entities как push_content вставляет переданную строку как текстовый узел, а не анализирует ее как разметку.OTOH, если содержимое $node равно <span> (представлено в источнике HTML как &lt;span&gt;), и вы действительно хотите, чтобы $a отображало &lt;span&gt; (представлено в источнике HTML как &amp;lt;span&amp;gt;), вы должны вызвать encode_entities.
  • Скорее всего, ваш входной текст содержит необработанные символы UTF-8, которые код интерпретирует как Latin-1 или аналогичную кодировку.Символы «одного пробела» на самом деле представляют собой U + 00A0, неразрывный пробел, который представлен в UTF-8 двумя байтами 0xc2 0xa0, которые при интерпретации в Latin-1 представляют собой «В» и неразрывный пробел.*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...