【发布时间】: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