2012-09-01 69 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提供了關於模塊的更多細節。