2012-09-01 54 views
1

我一直有来自不同编码的“gremlins”在Perl程序中混入表单输入和来自数据库的数据的问题。起初,我没有解码,聪明的语录和类似的东西会产生多个乱码字符;但是,盲目地将所有内容解码为UTF-8会导致较旧的Windows-1252内容充满问号。因此,我使用Encode :: Detect :: Detector和decode()函数来检测和解码所有POST和GET输入以及来自SQL数据库的数据(解码过程可能发生在10-20每次当一个页面被生成时,文本字符串)。这似乎正确地清理一些事情,从而UTF-8,ASCII和Windows 1252的所有内容显示为UTF-8输出(正如我在HTML头已任命):如何“昂贵”是Perl的Encode :: Detect :: Detector

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

我的问题是:如何资源沉重是这个过程?我没有注意到经济放缓,所以我觉得我很满意这种方式的效果,但如果有更有效的方式做到这一点,我很乐意听到它。

回答

3

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

量化开销的最佳方法是通过分析代码。你可能想要给Devel::NYTProf一个旋转。

Tim Bunce's YAPC::EU presentation提供了关于模块的更多细节。