URLエンコード・URLデコード方法・nkf †URLエンコードされた文字列をデコードしたり、文字列をURLエンコードしたりなど、nkfコマンドを使えば簡単にできます。 関連記事 †URLデコードしてみる †使用例としては、URLエンコードされた文字列を確認することが多いと思います。 URLエンコードされた文字列を使って実験してみます。 sakura@cygwin ~$ echo "%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AFLinux" | nkf -w --url-input こんにちはLinux 上記のようにURLエンコードされた文字列がデコードされ表示されます。 nkfでURLデコードする場合は、以下のような構文になります。 echo URLエンコード文字列 | nkf -Ww --url-input 以下のようにしても同等な出力が得られます。 echo URLエンコード文字列 | tr % = | nkf -WwmQ $ echo "%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AFLinux" | tr % = | nkf -WwmQ こんにちはLinux URLエンコードしてみる †URLエンコードの場合は、以下の構文になります。 nkfでURLエンコードするには、以下の構文になります。 echo エンコードしたい文字列 | nkf -WwMQ | tr = % | tr -d '\n' | sed -e 's/%%/%/g' 以下、調査内容を記述 sakura@cygwin ~$ STR='URLエンコード・デコード' sakura@cygwin ~$ echo $STR URLエンコード・デコード sakura@cygwin ~$ echo $STR | nkf -WwMQ URL=E3=82=A8=E3=83=B3=E3=82=B3=E3=83=BC=E3=83=89=E3=83=BB=E3=83=87=E3=82= =B3=E3=83=BC=E3=83=89 上記の通り、改行が入っているのが確認できます。 以下の通り=を%にtrコマンドで置換しています。 sakura@cygwin ~$ echo $STR | nkf -WwMQ | tr = % URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%83%BB%E3%83%87%E3%82% %B3%E3%83%BC%E3%83%89 これでも改行があるので、改行を消します。 sakura@cygwin ~$ echo $STR | nkf -WwMQ | tr = % | tr -d '\n' URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%83%BB%E3%83%87%E3%82%%B3%E3%83%BC%E3%83%89 さらに、%が2つ続いているところがあるので、2つ続いている%を1つの%にsedで置換しています。 echo $STR | nkf -WwMQ | tr = % | tr -d '\n' | sed -e 's/%%/%/g' URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%83%BB%E3%83%87%E3%82%B3%E3%83%BC%E3%83%89 実際の実行例です。 sakura@cygwin ~$ STR='URLエンコード・デコード' sakura@cygwin ~$ echo $STR URLエンコード・デコード sakura@cygwin ~$ ENC=`echo $STR | nkf -WwMQ | tr = % | tr -d '\n' | sed -e 's/%%/%/g'` sakura@cygwin ~$ echo $ENC URL%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%83%BB%E3%83%87%E3%82%B3%E3%83%BC%E3%83%89 sakura@cygwin ~$ echo $ENC | nkf -Ww --url-input URLエンコード・デコード $ echo $ENC | tr % = | nkf -WwmQ URLエンコード・デコード 以上、nkfを使ってURLエンコード・デコードをする方法でした。 |