1

我一直遇到来自不同编码的“gremlins”混入表单输入和来自 Perl 程序中的数据库的数据的问题。起初,我没有解码,智能引号和类似的东西会产生多个乱码;但是,盲目地将所有内容解码为 UTF-8 会导致较旧的 Windows-1252 内容充满问号。

因此,我使用 Encode::Detect::Detector 和 decode() 函数来检测和解码所有 POST 和 GET 输入,以及来自 SQL 数据库的数据(解码过程可能发生在每个文本字符串的 10-20 个字符串上)现在生成页面的时间)。这似乎清理了一切,因此 UTF-8、ASCII 和 Windows-1252 内容都正确显示为 UTF-8 输出(正如我在 HTML 标题中指定的那样):

    my $encoding_name = Encode::Detect::Detector::detect($value);   
    eval { $value = decode($encoding_name, $value) };

我的问题是:这个过程的资源量有多大?我没有注意到减速,所以我认为我对它的工作方式感到满意,但如果有更有效的方法来做到这一点,我会很高兴听到它。

4

1 回答 1

3

答案是高度依赖于应用程序的,因此应计的“费用”的可接受性是您的电话。

量化开销的最佳方法是分析您的代码。你可能想Devel::NYTProf试一试。

Tim Bunce 的YAPC::EU演示文稿提供了有关该模块的更多详细信息。

于 2012-09-01T19:30:15.880 回答