Help us understand the problem. What is going on with this article?

URLエンコード/デコード

More than 1 year has passed since last update.

表題のとおり urlエンコード/デコードしたい
linux で パイプやリダイレクトで利用したい

nkf を利用する方法がいくつか試みたが
どうも長い文字列などで文字化けするようだ

こんな時は perlが頼り

urlencode.pl
#!/usr/bin/perl

while(<>){
  $str .= $_;
}
$str =~ s/([^ 0-9a-zA-Z])/"%".uc(unpack("H2",$1))/eg;
$str =~ s/ /+/g;
print($str);

urldecode.pl
#!/usr/bin/perl

while(<>){
  $str .= $_;
}
$str =~ s/\+/ /g;
$str =~ s/%([0-9a-fA-F]{2})/pack("H2",$1)/eg;
print($str);

動作チェック

青空文庫「走れメロス」をエンコードしてデコード
比較する

curl -s http://www.aozora.gr.jp/cards/000035/files/1567_14913.html | nkf -w > sample.txt
urlencode.pl sample.txt | urldecode.pl  > sample.out
cmp sample.txt sample.out 

参考にしたページ
- nkfでURLエンコード
- URLエンコード / URLデコードするには (urlencode, urldecode)

wittyfool@github
フリーランスITエンジニア
http://nt55.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away