[解決済み] Rubyでbase64エンコードされた文字列の中にある不思議な "view"。
2022-04-21 14:15:25
質問
Rubyに内蔵されているBase64ライブラリに'˶'ᴗ'˶が追加されます。その原因がわかりません。この特殊な例では
irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'base64'
=> true
irb(main):003:0> str = "1110--ad6ca0b06e1fbeb7e6518a0418a73a6e04a67054"
=> "1110--ad6ca0b06e1fbeb7e6518a0418a73a6e04a67054"
irb(main):004:0> Base64.encode64(str)
=> "MTExMC0tYWQ2Y2EwYjA2ZTFmYmViN2U2NTE4YTA0MThhNzNhNmUwNGE2NzA1\nNA==\n"
を、最後と最後から6番目の位置に配置しました。デコーダ(Base64.decode64)は完全に古い文字列を返します。不思議なことに、これらの "second "はエンコードされた文字列には何の価値も与えません。また、出力された文字列から改行を取り除くと、デコーダは再び完全にそれをデコードします。
irb(main):005:0> Base64.decode64(Base64.encode64(str).gsub("\n", '')) == str
=> true
さらに、別のJSライブラリを使って、同じ入力文字列をbase64でエンコードした出力を生成してみました。
これはバグか何かでしょうか?どなたかこの問題に直面したことがある方はいらっしゃいますか?
ご参考までに。
$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
解決方法は?
編集する。
この回答を書いてから
Base64.strict_encode64()
が追加されましたが、これは改行を追加しないものです。
ドキュメント
はややわかりにくいですね。
b64encode
メソッドは、60文字ごとに改行を追加することになっています。
encode64
メソッドは、実際には
b64encode
メソッドを使用します。
のようです。
pack("m")
で使用される Array クラスのメソッドです。
encode64
も改行を追加しています。これがオプションでないのは、設計上のバグだと考えています。
自分で改行を削除するか、railsを使っているのであれば
ActiveSupport::CoreExtensions::Base64::Encoding
と共に
encode64s
メソッドを使用します。
関連
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyで文字列を小文字・大文字に変換する方法
-
[解決済み] base64文字列をエンコード、デコードするにはどうしたらいいですか?
-
[解決済み] Rubyのattr_accessorとは何ですか?
-
[解決済み] HTMLでBase64画像を表示する方法
-
[解決済み] バイナリデータをJSON文字列で。Base64より優れたもの
-
[解決済み] JavaScriptで画像をBase64文字列に変換するにはどうすればよいですか?
-
[解決済み】Node.jsでBase64エンコードを行うにはどうすればよいですか?
-
[解決済み】JavaScriptで文字列をBase64にエンコードするにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】rubyの1e18という数字は何を意味するのか?
-
[解決済み】Rubyで "gets "と "gets.chomp "を使用する方法
-
[解決済み】Ruby:kind_of? vs. instance_of? vs. is_a?
-
[解決済み] Rubyのメソッド'to_sym'は何をするのですか?
-
[解決済み] RMagickのインストール。MagickWand.hが見当たりません。
-
[解決済み] ルビーです。そのようなファイルやディレクトリはありません @ rb_sysopen - testfile (Errno::ENOENT)
-
[解決済み] レイルズ・ジェネレート」を逆手に取る方法
-
[解決済み] ルビー、すべての単語の最初の文字を大文字にする
-
[解決済み] Rubyでリフレクション?
-
[解決済み] Rubyで2次元配列の作成と反復処理