🤗
URLセーフなBase64エンコーディングとデコーディング
Base64エンコーディングした文字列をURLパラメータで送信を求められることがあります。Base64エンコーディングされた文字列にはURLに含められない+
、/
、=
が含まれるため、URLセーフ に変換が必要です。
Base64エンコーディングとは
データを 64種類の文字 (アルファベット大文字小文字、0から9の数字)と+
、 /
、=
の記号のみを使って変換する方式。メールの添付ファイル送信などに使われます。
javascriptの場合
const encoded = btoa("String to be encoded")
.replace(/=/g, "")
.replace(/\+/g, "-")
.replace(/\//g, "_");
javascriptの場合は btoa
でBase64エンコーディングした後、+
を-
に、/
を_
に変換し、末尾の=
は削除します。
デコードする場合は逆の操作をします。
const decoded = atob(encoded
.replace(/-/g, "+")
.replace(/_/g, "/"));
Pythonの場合
import base64
encoded = base64.urlsafe_b64encode("String to be encoded").decode('utf-8').replace('=', '')
pythonの場合、base64.urlsafe_b64encode
が使えますが、=
の削除はマニュアルで行います。
Discussion
記事助かりました!
デコードの方の記載が間違っているようなので報告です。
/
の変換元は_
の間違いではないでしょうか。ご指摘ありがとうございました!
おっしゃるとおりです。修正しました