スペースを節約するためにgzipで圧縮されたbase64文字列としてファイルからPostgreSQLデータベースに画像データを保存しようとしています。次のコードを使用して画像をエンコードしています。
@file = File.open("#{Rails.root.to_s}/public/" << @ad_object.image_url).read
@base64 = Base64.encode64(@file)
@compressed = ActiveSupport::Gzip.compress(@base64)
@compressed.force_encoding('UTF-8')
@ad_object.imageData = @compressed
オブジェクトを保存しようとすると、次のエラーが発生します。
ActiveRecord::StatementInvalid (PG::Error: ERROR: invalid byte sequence for encoding "UTF8": 0x8b
Railsコンソールでは、gzip圧縮はデータをASCII8ビットエンコーディングとして出力します。内部エンコーディングと外部エンコーディングをUTF-8に設定しようとしましたが、結果は変わりません。この圧縮データをUTF-8文字列にするにはどうすればよいですか?