我将 mod_perl2 用于网站并使用 CGI::Apache2::Wrapper 获取页面的请求参数(例如发布数据)。我注意到 $req->param("parameter") 函数返回的字符串不是 UTF-8。如果我按原样使用字符串,我可能会得到乱码的结果,所以我需要使用 Encode::decode_utf8() 对其进行解码。无论如何,要么获取已经解码为 UTF-8 字符串的参数,要么循环遍历参数并安全地解码它们?
问问题
760 次
1 回答
1
要获得已经解码的参数,我们需要Apache2::Request
从libapreq2覆盖底层类的行为,从而失去其 XS 速度优势。但这甚至是不可能的,因为不幸的是我们被CGI::Apache2::Wrapper
构造函数破坏了:
unless (defined $r and ref($r) and ref($r) eq 'Apache2::RequestRec') {
这是错误的OO编程,应该说
… $r->isa('Apache2::RequestRec')
或者可能完全放弃类名,只测试行为(… $r->can('param')
)。
我说,有这些障碍,不值得。我建议保留您现有的显式解码参数的解决方案。这很清楚。
于 2010-12-02T15:46:22.303 回答