PerlでUTF8でURLデコードするにはどうしたら良いでしょうか?


ネットで紹介されていた下記コードを実行すると、文字化けしてしまいます。
どうやらS-jisでデコードしてしまっているようです。

<前提>
"テスト" をUTF8でURLエンコードすると "%83e%83X%83g" となる。
この "%83e%83X%83g" を "テスト" に戻すコードが知りたい。
下記コードだと文字化けして "鄙サ險ウ莨夂、セ" となってしまう。

<現在のコード>
$str = "%83e%83X%83g";
$str =~ tr/+/ /;
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
print($str);

回答の条件
  • 1人2回まで
  • 登録:2008/09/10 12:30:03
  • 終了:2008/09/10 14:16:49

回答(1件)

id:taku_j_7 No.1

taku_j_7回答回数139ベストアンサー獲得回数122008/09/10 13:19:21

Perlであればエンコードモジュールのencode_utf8を使えばうまくいきます。

http://yumi-ii.squares.net/archives/2005/06/20050615223634.php


ご存じだとは思いますが、テストフォームもありますので、

エンコード・デコードの関連性を再認識するのも良いかもしれません。

http://www.tagindex.com/tool/url.html

id:tetlis

このサイトも見てわからなかったので質問しています。

もう少し具体的にお願いします。

実際、このサイトのまとめにあるコードを実行しても、

「Wide character in ~」と出て文字化けしてしまいます。

2008/09/10 14:03:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません