エクセルで、CSVファイルをインポートしたときに、文字化けが発生して正しく表示されない場合があります。
この原因と、解決策を図解入りで詳しく紹介します。
文字化けが起きる原因
一言でいうと、エクセルが想定した文字コードとCSVファイルの文字コードが一致していないからです。
文字コードとは、たとえて言うと日本語・英語・ドイツ語などの言葉のようなものです。
エクセルでよく使われる文字コードは、「UTF-8」と「Shift-JIS」の2種類です。
エクセルでCSVをインポートするときにはどの文字コードを使っているかを手動で指定できますし、指定しなくてもファイル内容から自動的に文字コードを判別してくれます。
ところが、文字コード「UTF-8」の場合はさらに2種類あって、「UTF-8(BOMなし)」「UTF-8(BOMあり)」の後者でなければ、エクセルは誤動作でエクセル標準の文字コードの「Shift_JIS」で読み込まれてしまいます。
つまり、エクセルで自動的に「UTF-8」を認識させるためには、「UTF-8(BOM付き)」である必要があるわけです。
ちなみに「BOM」とは、”バイトオーダーマーク(byte order mark)”の略で、ファイルの付加情報です。
専門的な話になるのでこれ以上は深入りしませんが、興味のある人はウィキペディアなどを調べてみてください。
余談ですが、かつてIT機器といえばWindowsパソコンが使われることが多く、そこでは「Shift-JIS」が使われていました。
しかし、現在ではMac/Linux/iOS/Androidなどマルチプラットフォームが当たり前になっていますので、マルチプラットフォームと親和性が高い「UTF-8」を使うことが前提となっています。
エクセルで「Shift-JIS」が標準なのは、かつての名残です。
解決方法
根本的な解決方法
CSVファイルを作るときに、文字コードUTF-8の場合はBOM付きのファイルを作成することです。
具体例で言えば、Pythonの場合は次のコードのようにencodingを指定すると、BOM付きのUTF-8が出力できます。
with open(path, 'w', encoding="utf_8_sig") as f:
対処療法的な解決方法
CSVファイルを作るときに手を加えられないとすると、作成済みのCSVファイルをテキストエディターで開いて、BOM付きUTF-8の文字コードで保存し直す、というやり方になります。
以下に具体的な方法を紹介しますが、念の為に元のCSVからコピーを作って作業をするようにしてください。
Windowsを使っている場合
ここではWindows標準アプリの「メモ帳」を使った場合の説明をします。
要は、文字コード「UTF-8(BOM付き)」でファイル保存すればいいだけなので、メモ帳以外のテキストエディター(サクラエディタ、Mery、秀丸など)でも可能です。
- Step 1
- Step 2
- Step 3
- Step 4
Macを使っている場合
Windowsとは違って、Mac標準アプリの「テキストエディット」では「UTF-8(BOM付き)」の保存ができないので、別のアプリを使う必要があります。
ここでは、App Storeから入手できる「CotEditor」を使った方法を紹介します。
要は、文字コード「UTF-8(BOM付き)」でファイル保存すればいいだけなので、CotEditor以外のテキストエディター(mi、Jedit Xなど)でも可能です。
- Step 1
以下のリンクをクリックして、App StoreからCotEditorをインストールします。
CotEditorCotEditorは軽快で洗練された、そして高機能なテキストエディタです。Webページ (HTML, CSS) やプログラムソースコード (Python, Ruby, Perl, etc)、構造化文書 (Markdown, Textile, TeX, etc) ほか、装飾情報を含まない「プレーンテキスト」ならなんでも... - Step 2
- Step 2
- Step 3
- Step 4
コメント