検索サイトなどのURL中に含まれる「%+16進」の形にエンコードされた日本語文字列(例えばI%E3%82%B7%E3%83%A1%E3%82%B8I)を、LinuxのCUI上でデコードする簡単な方法はないでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:ozonepapa No.1

回答回数288ベストアンサー獲得回数0

ポイント13pt

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

Web便利ツール/URLエンコード・デコードフォーム - TAG index

CUIでということですが、ブラウザを使ってもよいのであればこのようなページを使うのが簡単です。

http://techtips.belution.com/ja/perl/0000/

URL エンコード / デコード はどのようにして行いますか?

URLエンコードされた文字列をデコードするプログラムの部分がperlで紹介されています。


以下のようなスクリプトを書けばデコードできるのではないかと思います。

$str = ”%83e%83X%83g”

$str =~ s/([^¥w ])/’%’ . unpack(’H2’, $1)/eg;

$str =~ tr/ /+/;

print $str

http://kabocha.org/jelfe/10/04.html

�R���Ƃ̋t�P->perl/CGI�v���O���~���O->�G���R�[�h/�f�R�[�h

id:malts

ありがとうございます。

Perlでデコード用のスクリプトを書くのが早いかもしれませんね。

2006/02/25 06:24:38
id:nurse No.2

回答回数13ベストアンサー獲得回数2

ポイント34pt

http://sourceforge.jp/projects/nkf/

SourceForge.jp: Project Info - nkf Network Kanji Filter

nkf --url-input で可能ですよ。

コンソールの文字コードに合わせて、適宜 -e や -w も一緒に指定するといいでしょう。

id:malts

nkfで可能なんですね。

ありがとうございます、試してみます。

2006/02/25 06:25:49
id:aki73ix No.3

回答回数5224ベストアンサー獲得回数27

ポイント13pt

perlを利用してはいかがでしょうか?


perl -e でプログラムを1行単位で指定できます

$in= の中に変換文字列をかませてコンバートすれば出力されます

この場合はIシメジI ですね


文字化けする場合はパイプで nkf を指定すればよいかと思います


perl -e '$in="I%E3%82%B7%E3%83%A1%E3%82%B8I";' -e '$in=~s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("c",hex($1))/ge;' -e 'print $in."¥n";'

id:malts

ありがとうございます。

こういう処理にはPerlが定番かもしれません。

ちなみにシメジの前後の「I」ですが、質問入力時にダブルコーテーションを入力したのですが、なぜか「I」に変わってました。

皆さんありがとうございました。

2006/02/25 06:28:42

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

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

トラックバック

  • tips - "%E5%BC%BE" を「弾」にするには? 404 Blog Not Found 2009-05-01 14:13:19
    これ、昨今では最もよく再発明されている車輪の一つかも。 検索サイトなどのURL中に含まれる「%+16進」の形にエンコードされた日本語文字列(例えばI%E3%82%B7%E3%83%A1%E3%82%B8I)を、Lin
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

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

回答リクエストを送信したユーザーはいません