実現したいこと
UTF-8のデータが保存されたDBからレコードを取得し、Shift-JISでCSVに書き込み、出力したい。
困っていること
データの量が膨大なため、CSVを複数ファイルに分割して出力しているのですが、時々
'shift_jis' codec can't encode character '\u3396' in position XXX: illegal multibyte sequence
のようなエラーが出てCSVの作成に失敗します。
その都度、Pythonの出力部ではDBから取得したデータに対して.replace('\u3396', '\uXZXZ')
のような変換処理をかませているのですが、この調子だとUnicode -> Shift_JISの全ての変換不能文字について上記のようなリプレイス処理を追記することになってしまい、あまりスマートでは無くなってしまうことを懸念しています。
UTF-8 から Shift-JIS に変換しつつ大量のデータを出力する場合、変換不能文字について上記のように代替となる文字に変換する以外に最適な対応策などありますでしょうか。また、代替文字に置き換える方法をとる場合、スマートな実装などあればご教示いただきたいです。
ご助力いただけると幸いです。
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/12 07:13