nkfでURLエンコード

最近web APIを提供するケースが多くなってきたのだが、問題はテスト時にパラメタに2バイト文字をセットするとき。

簡単に言えばURLエンコードしろと。

できるだけ簡単にやりたいのでnkfをつかってやることに。

 

$ rpm -q nkf

nkf-2.07-1.1.fc6

 

な環境で実行することとする。

 

$ echo 'ほげ?' |nkf -sMQ |tr = %

s:出力文字をSHIFT-JISとする

MQ Quoted stream に変換する

単にここまで実行すると

 

$ echo 'みずほ '|nkf -sMQ

=82=DD=82=B8=82=D9=20

 

この結果をパイプでtrして=を%にしてあげるわけですな。

 

----

おまけ。

半角カナでやりたいときはもう一つオプションが必要。

nkfのデフォルトの動作としては 半角カタカナを全角カタカナに変換するらしい。

 

$ echo 'ホゲ' |nkf -sxMQ |tr = %

       -x  通常おこなわれる、いわゆる半角カナ (JIS X 0201 片仮名) からいわゆる

           全角カナ (JIS X 0208 片仮名) への変換を行わず、半角カナを保存する。

           入力は、Shift_JIS の 1byte カナ、SO/SI、ESC-(-I, SSO を受け付ける。

           出力は、日本語 EUC 中では SSO、JIS コード中では ESC-(-I をデフォル

           トで用いる。