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

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

●質問者: malts
●カテゴリ:コンピュータ
✍キーワード:A1 Cui E3 Linux URL
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ozonepapa
●13ポイント

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://www.din.or.jp/~ohzaki/perl.htm#JP_Escape

Perlメモ

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

?R?????t?P->perl/CGI?v???O???~???O->?G???R?[?h/?f?R?[?h

◎質問者からの返答

ありがとうございます。

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


2 ● 成瀬
●34ポイント

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

SourceForge.jp: Project Info - nkf Network Kanji Filter

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

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

◎質問者からの返答

nkfで可能なんですね。

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


3 ● aki73ix
●13ポイント

http://infosys.gsid.nagoya-u.ac.jp/~ohna/perl_lesson/perl01.html

Perl Lesson 1

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";'

◎質問者からの返答

ありがとうございます。

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

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

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

関連質問


●質問をもっと探す●



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