DjangoでダウンロードするCSVの文字コードを設定
以下のような、attachmentをつけて即ダウンロードが始まるシステムで、文字コードをShift-JISにする為にto_csv()の引数にencodingをShift-JISに設定しても、ダウンロードするとUTF-8で […]
Filter by Category
以下のような、attachmentをつけて即ダウンロードが始まるシステムで、文字コードをShift-JISにする為にto_csv()の引数にencodingをShift-JISに設定しても、ダウンロードするとUTF-8で […]
DjangoのWEBプリケーションでCSVをpandasで読み込んでforで一行ずつループ処理をしたところ、毎回決まったところで決まったエラーが出たのでPyCharmのデバッグ機能を使って原因を調べた内容です。 プログラ […]
DjangoでQuerySetで取得したデータをそのままpandasのDataFrameに変換する方法です。データを成形する必要がないときや、とりあえず全件CSV化したいときなどに便利な方法です。
Django上でPandasで作ったCSVをダウンロードさせる方法です。df.to_csv(“filename.csv”)でも出力は出来ますがダウンロードは出来ないので、ダウンロード機能が必要な場 […]
以下のような、attachmentをつけて即ダウンロードが始まるシステムで、文字コードをShift-JISにする為にto_csv()の引数にencodingをShift-JISに設定しても、ダウンロードするとUTF-8でダウンロードされてしまいました。
他にもencodingをcp923に設定してダウンロードしてみましたが、同じくUTF-8でダウンロードされてしまいました。
file_name = 'filename.csv'
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="{}"'.format(urllib.parse.quote(file_name))
df.to_csv(path_or_buf=response, sep=';', float_format='%.2f', index=True, decimal=",", encoding='shift_jis')
return response
調べていて分かったことは、to_csv()のencodingをShift-JISに設定するのではなく、HttpResponse自体のcharsetをShift-JISに設定してあげると無事にダウンロードできるということ。
file_name = 'filename.csv'
response = HttpResponse(content_type='text/csv; charset=Shift-JIS')
response['Content-Disposition'] = 'attachment; filename="{}"'.format(urllib.parse.quote(file_name))
df.to_csv(path_or_buf=response, sep=';', float_format='%.2f', index=True, decimal=",", encoding='shift_jis')
return response
response = HttpResponse(content_type='text/csv; charset=Shift-JIS')
charsetをShift-JISに設定
当ブログは群馬県でPythonを使ったAIやシステムを開発している株式会社ファントムが運営しています。
Comments