Edited at

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)