Webサイトにmod_perl2を使用しており、CGI :: Apache2 :: Wrapperを使用してページのリクエストパラメーター(投稿データなど)を取得しています。$ req-> param( "parameter")関数が返す文字列がUTF-8ではないことに気づきました。文字列をそのまま使用すると、結果が文字化けする可能性があるため、Encode :: decode_utf8()を使用してデコードする必要があります。パラメータをすでにUTF-8文字列にデコードするか、パラメータをループして安全にデコードする方法はありますか?
1 に答える
1
すでにデコードされたパラメーターを取得するには、libapreq2Apache2::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')
)。
私は、それらの障害があると、それは価値がないと言います. パラメータを明示的にデコードする既存のソリューションを維持することをお勧めします。それは十分に明らかです。
リクエスト パラメータをループするには、メソッドに引数を渡さないだけparam
で、名前のリストが取得されます。これは文書化されています ( 1 , 2 )。もっと注意深く読んでください。
于 2010-12-02T15:46:22.303 に答える