質問: ### 前提・実現したいこと ある海外製ソフトウェアの設定ファイルを作成するために、CSVをJSONに変換するプログラムを書きました。 書き出したJSONファイルをソフトウェアへ読み込ませると住所など日本語の部分だけ文字化けしてしまいました。 正常に日本語を読み込めているJSONの文字コードを調べたところ、「ISO-8859-2」であることが分かりました。 Open関数で書き出しているのですが、UTF-8の代わりにISO-8859-2を指定するとエラーとなってしまいます。 根本的にやり方が間違っている気がしているのですが、よくわかっていない状態です。 ご教授いただけると助かります。 ### 発生している問題・エラーメッセージ ``` UnicodeEncodeError: 'charmap' codec can't encode characters in position 43-44: character maps to ``` ### 該当のソースコード ``` # ~~ 前略 ~~ # JSON形式で書き込み with open('./settings.json', 'w', encoding='ISO-8859-2') as f: f.write(';\n'.join(result)) ``` ### 補足情報(FW/ツールのバージョンなど) Python 3.7.0
回答: `ISO-8859-2`は**「中央ヨーロッパの言語のためのラテンアルファベットの文字コードの標準」**(出典:Wikipedia)なので、本来は日本語を表現できません。 `ISO-8859-2`だという話が間違っているか、マルチバイト文字を何かしら変換して強引に`ISO-8859-2`にしているのかのどっちかでしょう。