我一直有來自不同編碼的「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) };
我的問題是:如何資源沉重是這個過程?我沒有注意到經濟放緩,所以我覺得我很滿意這種方式的效果,但如果有更有效的方式做到這一點,我很樂意聽到它。