さくっと、パーセントエンコード percentencode 3分クッキング 🐪
「はたらく細胞」がいまマイブームです。コミック原作のアニメです。AmazonVideoでも配信されていますね。さて、Perlコマンドですからほとんどの環境(MACとLinux)では事実上標準ではいっています。貼り付けるだけ。すぐにそのまま使えます。Windows 10でLinuxを利用できるWSL(Windows Subsystem for Linux)のユーザが増えてきたと仮定すると同じくそのまま使えます。
●🐪モジュールは、https://metacpan.org/pod/URI::Escape 標準モジュールです。インストール不要です。入ってます。
●あまりにカンタンすぎるのでWEB上サービスはありますが、ローカルで処理できるとシェルスクリプトをはじめとするプログラムに組み込めるので便利かと思います。
●定義(RFC 3986)されるまでは用語が確立されていなかったので、先行したこのモジュールではURIエスケープと呼んでいるみたいですね。
はたらく細胞 ⇄ %E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E
%エンコード(percentencode)は16進ですからふつうの人間には読めない並びになります。空白なら覚えていますが。人間には全部おぼえるのは通常無理かと。
新規端末 CTRL+ALT+T
OneLiner で文字列を埋め込む
$ perl -MURI::Escape -E 'say uri_escape("はたらく細胞");'Enter
%E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E
%E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E
OneLiner で文字列を引数の配列@ARGVで
$ perl -MURI::Escape -E 'say uri_escape("@ARGV");' "はたらく細胞"Enter
%E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E
OneLiner で文字列を引数の番号$ARGV[0]で。コマンド置換の例
$ perl -MURI::Escape -E 'say uri_escape($ARGV[0]);' "はたらく細胞"Enter
%E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E
シェルでコマンド置換する例です。
1) 変数 hatarakusaibou に格納。
2) そして変数が有効になっているか調べる。
1) 変数 hatarakusaibou に格納。
2) そして変数が有効になっているか調べる。
$ echo $hatarakusaibou
%E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E
上の結果と一致しているのでOK。
引数を「+」で連続させる文字列を一発で取得するには
完成かなと思います。bash関数にするなり、バッチファイルにするなりしておくと便利かも。bash履歴から呼び出すってのも王道のひとつです。
以上の雛型があれば、スクリプトにするのは容易です。というか動いていればそれで完成なので、以上で、既にできていますね。
- Python3 + BeautifulSoap さんで、グーグル様にちょっと投げてみる時などに使えますし、そもそもPythonなのだから標準ライブラリで処理せよという話。
- [Python3]
percentencode=urllib.parse.quote('はたらく細胞') ⬅ これでも解決します。 - -E で、say を使っています(改行が自動でつくと困る場合はprintでどうぞ)。
- 標準モジュールURI::ESCAPEをワンライナーでも使えるように組み込む。
-MURI::Escape
OneLiner 上記のリバース(戻し方)
$ perl -MURI::Escape -E '$unescape=uri_unescape("@ARGV"); ;say $unescape' %E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E+%E5%85%AC%E5%BC%8F+%E3%82%A2%E3%83%8B%E3%83%A1↲
はたらく細胞+公式+アニメ ⬅戻りました。
はたらく細胞+公式+アニメ ⬅戻りました。
bash 関数に組み込む:: たとえば .bashrcなどの末尾に貼り付け(これだけもっていけばだいじょうぶ!!)
function URIESCAPE () {
#引数を「+」で連続させる文字列取得
perl -MURI::Escape -E '$escape=uri_escape("@ARGV"); $escape =~ s/%20/+/g ;say $escape' $@
}
#引数を「+」で連続させる文字列取得
perl -MURI::Escape -E '$escape=uri_escape("@ARGV"); $escape =~ s/%20/+/g ;say $escape' $@
}
その後は、次のコマンドで呼び出せるようになります。source .bashrc や .bash関数定義をまとめたファイル。わからない場合は、再起動すればいいです。
そうすると、次のように呼び出せば、便利になるかと思います。
$ URIESCAPE はたらく細胞 ↲
こうして出力された文字列をコピーして使います。背後で誰がはたらいていようが、それがPerlだろうが、AWKだろうが、使う側からみれば関係ないですよね。「はたらく細胞」の世界と同じで、白血球の働きを知らなくても、私たちは生きていけるのです。がんばれ、血小板のナンバー2。
こうして出力された文字列をコピーして使います。背後で誰がはたらいていようが、それがPerlだろうが、AWKだろうが、使う側からみれば関係ないですよね。「はたらく細胞」の世界と同じで、白血球の働きを知らなくても、私たちは生きていけるのです。がんばれ、血小板のナンバー2。