jqでURIエンコードする
ka2n
(Updated: )
ごく稀にbashなどのシェルや、CLIプログラムで使用するプログラムから日本語などをURIエンコードしたいことがあると思います。
そのためにrubyやnode.jsを動かすのも面倒だなぁ、と思っていたのですがjqでもできることがわかったのでメモしておきます。
やり方
$ echo "日本語" | jq -Rr @uri
%E6%97%A5%E6%9C%AC%E8%AA%9E
# echoには改行(\n)が含まれるがそれも含める場合
$ echo "日本語" | jq -sRr @uri
%E6%97%A5%E6%9C%AC%E8%AA%9E%0Aオプションの説明
-R, --raw-input: JSONとしてパースせず、行ごとに文字列として処理を行う-r, --raw-output: 文字列として出力を行う@uri:percent-encodingを行う- ほかにもこんなのがありました。(jq (1): Linux man pages – code.tools)
@html: HTMLとしてエスケープする@base64: Base64エンコードする@json,@csv,@tsv: JSON,CSV,TSVとして出力
- ほかにもこんなのがありました。(jq (1): Linux man pages – code.tools)
ka2n
Webエンジニアです
