如何防止HTML Tidy编码IDN?

时间:2012-12-13 12:31:25

标签: tidy idn

我正在使用HTML Tidy,而不是

<a href="http://www.äöü.com/">Link</a>

它使

<a href="http://www.%C3%A4%C3%B6%C3%BC.de/">Link</a>

如何告诉Tidy保持链接的方式?

我的配置:

'output-xhtml' => true,
'numeric-entities' => true,
'hide-comments' => false,
'show-body-only' => true,
'doctype' => 'transitional',
'wrap' => 0,
'alt-text' => '',
'word-2000' => true,
'drop-proprietary-attributes' => true

我还尝试停用fix-uri并将char-encoding设置为utf8,但无济于事。

我之所以这样做是因为Firefox最近遇到了这种URL编码的问题。尝试在最新版本的Firefox中访问www.v%C3%A4terwiderstand.de(由于stackoverflow似乎无法处理带有变音符号的域,因此无法实现其中的实际链接),并且您将会看到“找不到服务器”错误。然后,只需点击输入URL栏即可打开网站。据我所知,这在其他浏览器中不会发生。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

我不确定你的ENV是什么样的,但这有效; fix-uri=no|0就是我所需要的一切。我添加了char-encoding参数以获得良好的衡量标准。 Perl的整洁包装了整洁的lib,因此在转换参数后,这应该对大多数/任何整洁的用途有效。

#!/usr/bin/env perl
use strictures;
use utf8;
use open qw( :std :utf8 );
use HTML::Tidy;

print HTML::Tidy
    ->new({ "show-body-only" => 1,
            "char-encoding" => "utf8",
            "fix-uri" => 0, })
    ->clean(q{<a href="http://www.äöü.com/">Link</a>});

__END__
<a href="http://www.äöü.com/">Link</a>