人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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


●質問者: tetlis
●カテゴリ:コンピュータ インターネット
✍キーワード:E3 FA H2 Perl print
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ele_dir
●35ポイント ベストアンサー

テキストデータに、これを作成して、試してみてください。

当方の環境では正常に動作しました。

$str = "%e3%83%86%e3%82%b9%e3%83%88";

$str =~ tr/+/ /;

$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;

use Encode qw/ from_to /;

&from_to( $str, "utf8", "shiftjis" );

open(FH,">test.txt");

print $str;

print FH $str;

close(FH);


結果:

テスト

作成ファイル

test.txt

内容

テスト



URLデコードアプリ

◎質問者からの返答

ありがとうございます。完璧です!


2 ● ele_dir
●35ポイント

すいません。環境について記載し忘れました。

↑テキストデータに、これを作成して、試してみてください。

当方の環境(ActivePerlv5.8.8,WinXpProSP3,Windows付属テキストエディターにて作成)では問題なく正常に動作しました。

これで正常に動作しない場合、詳しいご利用の環境を教えてください。

コメントにて補足いたします。

動作確認ですが、

結果:

テスト

作成ファイル

test.txt

内容

テスト

以上となります。


URLデコードアプリ

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ