【Ruby】Base64.encode64 は改行コードが入る
2022/10/16
Ruby で Base64.encode64 を使った時に末尾に改行コード(\n)が入っていることに気がついた
require 'base64'
Base64.encode64('こんにちはこんにちはこんにちはこんにちは')
#=> "44GT44KT44Gr44Gh44Gv44GT44KT44Gr44Gh44Gv44GT44KT44Gr44Gh44Gv\n44GT44KT44Gr44Gh44Gv\n"
RFC2045 の仕様に準拠していて、末尾以外にも60文字ごとに改行コードが追加されるっぽい(Base64.#encode64 (Ruby 3.1 リファレンスマニュアル))
改行コードが入って欲しくない時は、Base64.strict_encode64 を使うと良い
require 'base64'
Base64.strict_encode64('こんにちはこんにちはこんにちはこんにちは')
#=> "44GT44KT44Gr44Gh44Gv44GT44KT44Gr44Gh44Gv44GT44KT44Gr44Gh44Gv44GT44KT44Gr44Gh44Gv"
これは RFC4648 の仕様に準拠している(Base64.#strict_encode64 (Ruby 3.1 リファレンスマニュアル))