【问题标题】:How "Expensive" is Perl's Encode::Detect::DetectorPerl 的 Encode::Detect::Detector 有多“昂贵”
【发布时间】:2012-08-27 04:06:21
【问题描述】:

我一直遇到来自不同编码的“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) };

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

【问题讨论】:

    标签: perl utf-8 decode utf8-decode


    【解决方案1】:

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

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

    Tim Bunce's YAPC::EU presentation 提供有关该模块的更多详细信息。

    【讨论】:

      猜你喜欢
      • 2011-12-06
      • 1970-01-01
      • 2016-01-31
      • 2010-10-08
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      相关资源
      最近更新 更多