プロが教える店舗&オフィスのセキュリティ対策術

POSTでCGIに渡す文字列はURLエンコードされていて、元に戻すにはデコードが必要ですが、もともとURLエンコードされたデータをデコードしたデータにできないでしょうか。
普通は、
読める文字→URLエンコード→CGIによる処理→URLデコード→読める文字
ですが、
もとのデータがURLエンコードされた状態だと、
URLエンコードされた文字→URLエンコード→CGIによるURLデコード→URLエンコードされた文字
となってしまいます。
たとえば、「%82%a0%82%a0%82%a0」というデータ形式から、「あああ」というデータを得たいのです。

A 回答 (1件)

$str をエンコードされた文字列とします。



while ($str =~ /%([0-9a-fA-F][0-9a-fA-F])/g ) {
 $str =~ s/\+/ /g;
 $str =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg;
}

で、URLエンコードされていると思われる文字列(%+十六進の数字) がなくなるまで
ひたすらデコードしてくれると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!