使用HTML :: TreeBuilder& amp;生成的特殊字符HTML ::元

时间:2011-03-26 13:27:19

标签: html perl

我有两个问题:

  • 如果我使用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?
    
  • 其次在使用as_HTML()处理和生成整个html文档后,它有时会生成一些特殊字符,例如:Â(Â)作为额外的字符,当我看到的是Dreamweaver中的单个空格时。

1 个答案:

答案 0 :(得分:2)

我有两个答案:

  • 假设您希望$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中解释时为“”且不间断空格。