この記事はAkerun Advent Calendar 5日目です。
はじめまして! AkerunのAPIや管理画面を主に開発しているエンジニアのhirataです。
CSVファイルをWindowsのMicrosoft Excelで読み込んだ時、日本語が文字化けする問題を解決しようとした時の話です。
よく見る解決方法は、読み込もうとしているCSVファイルの文字コードをSJISに変換してからExcelで開く事です。
しかし、SJISにも読めない文字が存在します。 例えば「土」に「口」の「𠮷」という文字です。使用している変換プログラムによっては「吉」ではなく「𠮷」を使う場合があるのでExcelで開くと文字化けします。
ここでもう一つの可能性がある方法を紹介したいと思います。 それは、UTF-8文字コードです。
UTF-8でCSVをエンコードすると「𠮷」という字も読めます。 だが、CSVをUTF-8にエンコードしてもExcelで開いたらまだ文字化けをしています。
ExcelでUTF-8を開く時はUTF-8のBOM付きというCSVではないと正しく読み込めない事がわかりました。 BOMとはByte Order Markの略で簡単に説明するとファイルの先頭に、このファイルはUTF-8ですよと数バイト付けてあげる事です。
これでExcelでも「𠮷」が文字化けしないで読めます。
文字化けしない事がわかったのでとりあえずCSVを「𠮷」で埋め尽くして保存しましょう。
少し寝かせて出来上がった物がこちらです。
え?
そうなんです、ExcelでUTF-8のBOM付きのファイルを編集して保存をしたらBOMをはずしてしまうのです。 読める事はできるが編集ができないCSVファイル、、、、
読み込む事はできても編集ができないのでこれからもSJISで頑張りたいと思います。
今回は、皆様が同じような過程で時間を無駄にしないように記事にしてみました。