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