activeadminのcsvダウンロード(SJIS)でエンコードエラーが起きたので対処してみた

activeadminでSJISでcsvダウンロードしたかったので、optionを渡しました。

# config/initializers/active_admin.rb
config.csv_options = { encoding: 'CP932' }

しかし、これだとエンコードエラー。

モンキーパッチを当ててみました。
encodeメソッドを繰り返して、SJISエラー回避してます。
あまりきれいじゃないけど、これでいけました。

# config/initializers/monkey_patches/active_admin.rb:
module ActiveAdmin
class CSVBuilder
def encode(content, options)
if options[:encoding]
content.to_s.encode("Windows-31J","UTF-8",invalid: :replace, undef: :replace).encode("UTF-8", "Windows-31J").encode("Windows-31J","UTF-8")
else
content
end
end
end
end

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です