よくシェルスクリプトで、文字列をURIエスケープするときの技としてnkfとtr = %で変換する方法が案内されてますが、文字列によってはおかしくなることがあるみたい。
シェルスクリプト
#utf8で書いてます。
w="アイウエオカキクケ"
enc=`echo "${w}" | nkf -wMQ | tr = % | tr -d "\n"`
echo "nkf [${enc}]"
enc=`echo "${w}" | perl -nle '{use utf8;use Encode;use URI::Escape;print uri_escape($_)}'`
echo "perl [${enc}]"
出力
nkf [%E3%82%A2%E3%82%A4%E3%82%A6%E3%82%A8%E3%82%AA%E3%82%AB%E3%82%AD%E3%82%AF%%E3%82%B1]
perl [%E3%82%A2%E3%82%A4%E3%82%A6%E3%82%A8%E3%82%AA%E3%82%AB%E3%82%AD%E3%82%AF%E3%82%B1]
なんで%が1個多くなるんでしょう...?