パーセントエンコードをさくっと処理 percentencode URI_Encode

さくっと、パーセントエンコード 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

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) そして変数が有効になっているか調べる。

$ hatarakusaibou=$(perl -MURI::Escape -E 'say uri_escape("@ARGV");' はたらく細胞)Enter

$ echo $hatarakusaibouEn ter

%E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E

上の結果と一致しているのでOK。




引数を「+」で連続させる文字列を一発で取得するには

$ perl -MURI::Escape -E '$escape=uri_escape("@ARGV"); $escape =~ s/%20/+/g ;say $escape' はたらく細胞 公式 アニメEnter

%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関数にするなり、バッチファイルにするなりしておくと便利かも。bash履歴から呼び出すってのも王道のひとつです。

以上の雛型があれば、スクリプトにするのは容易です。というか動いていればそれで完成なので、以上で、既にできていますね。
  • Python3 + BeautifulSoap さんで、グーグル様にちょっと投げてみる時などに使えますし、そもそもPythonなのだから標準ライブラリで処理せよという話。
  • [Python3] 
    percentencode=urllib.parse.quote('はたらく細胞') ⬅ これでも解決します。
  • -E で、say を使っています(改行が自動でつくと困る場合はprintでどうぞ)。
  • 標準モジュールURI::ESCAPEをワンライナーでも使えるように組み込む。
    -MURI::Escape 
uri_escape_utf8($ string)という使い方のほうが、UTF-8を扱う場合はよいのかもしれません。特に長い文字列を扱う場合。

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' $@
}


その後は、次のコマンドで呼び出せるようになります。source .bashrc や .bash関数定義をまとめたファイル。わからない場合は、再起動すればいいです。


そうすると、次のように呼び出せば、便利になるかと思います。


$ URIESCAPE はたらく細胞 

こうして出力された文字列をコピーして使います。背後で誰がはたらいていようが、それがPerlだろうが、AWKだろうが、使う側からみれば関係ないですよね。「はたらく細胞」の世界と同じで、白血球の働きを知らなくても、私たちは生きていけるのです。がんばれ、血小板のナンバー2。

Namida Zone :: 神々は細部に宿る――涙とともに、夜な夜なパンをかじった。

Grub2をめぐるあれこれ。テーマ、背景、フォント。それが Cute Grub 計画

No Copyright Girl / ノーコピーライトガール Grubと戯れるという意味のない日常:: Cute Grub 計画 コンピューターの電源オン後、 OS オペレーティングシステムを起動するためのブートローダーが先ず動きだす――ほぼすべてのLinux...