##起こっている問題
画面からボタンを押すと下記の処理が流れるようになっています
ruby
1 def excel_download 2 Zip.unicode_names = true 3 data = Zip::OutputStream.write_buffer do |out| 4 out.put_next_entry("テスト_1.xlsx") 5 end.string 6 send_data data, type: 'application/zip', filename: 'test.zip' 7 end
zipがダウンロードされて、解凍すると
繝・せ繝・1.xlsx
と文字化けしています
##状況
binding.pryで文字コードを調べたところ、UTF-8になっていました。
"テスト_1.xlsx".encoding
=> #Encoding:UTF-8
また、send_dataのfilenameを日本語にしても文字化けしていました
send_data data, type: 'application/zip', filename: 'テスト.zip'
##対応したこと
以下の二つのようにして、それぞれ動作確認しましたが、エラーになりました
"テスト_1.xlsx".encode('SHIFT-JIS')
"テスト_1.xlsx".encode(Encoding::CP932)
####エラー内容
Zip::Error (local header size changed (46 -> 43)):
文字コードをどうにかすればいいと思うのですが、どうすればいいのでしょうか・・・
よろしくお願いします
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/16 09:32