- 締切済み
URLエンコードされたデータを戻すには
POSTでCGIに渡す文字列はURLエンコードされていて、元に戻すにはデコードが必要ですが、もともとURLエンコードされたデータをデコードしたデータにできないでしょうか。 普通は、 読める文字→URLエンコード→CGIによる処理→URLデコード→読める文字 ですが、 もとのデータがURLエンコードされた状態だと、 URLエンコードされた文字→URLエンコード→CGIによるURLデコード→URLエンコードされた文字 となってしまいます。 たとえば、「%82%a0%82%a0%82%a0」というデータ形式から、「あああ」というデータを得たいのです。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- 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エンコードされていると思われる文字列(%+十六進の数字) がなくなるまで ひたすらデコードしてくれると思います。