• 締切済み

URLエンコードされたデータを戻すには

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

みんなの回答

  • tailkuppa
  • ベストアンサー率53% (52/98)
回答No.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エンコードされていると思われる文字列(%+十六進の数字) がなくなるまで ひたすらデコードしてくれると思います。

関連するQ&A

専門家に質問してみよう