CSVファイルを文字化けさせずにエクセルで開く方法【Contact Form 7×Flamingo】

企業サイトやメディアサイト運営には欠かせないお問い合わせフォーム。
WordPressであれば「Contact Form 7」というプラグインを使用することで簡単に設置することができます。

また同じく「Contact Form 7」の作者が作った「Flamingo」は、管理画面からお問い合わせデータを閲覧したり、CSVファイルをエクスポートしたりできる便利なプラグインであるため利用している方も多いのではないでしょうか?

しかしこの「Flamingo」でエクスポートしたCSVファイルをエクセルで開くと、文字化けしてしまいそのままでは閲覧できなくなってしまうという問題があります。

これは「Flamingo」が「UTF-8」という文字コードでCSVファイルをエクスポートするのに対し、「エクセル」は特に指定がない場合「Shift-JIS」という文字コードでデータを読み込むようになっているため起こる問題です。

今回はこの文字化けの対応方法を3つ解説していきます。

文字化け対処方法1.
エクセルの「外部データの取り込み」でUTF-8にする

1. 「データ > 外部データの取り込み > テキストファイル」

2. 文字化けしていないことを確認して「次へ」

文字化けしていないかを確認して進めてください。
ただ、改行が入っているとセルが改行されて別データになってしまうためあまりオススメの方法ではありません。

文字化け対処方法2.
CSVファイルをBOM付きで保存する

「BOM(byte order mark))」とはファイルの先頭につける数バイトのデータのことです。
このデータが付いていれば「BOM付き」、付いていなければ「BOMなし」と呼ばれます。

エクセルの場合、CSVファイルが「BOM付き」であれば「UTF-8」として文字コードを認識してくれるため、改めて「BOM付き」でCSVファイルを保存します。
※Windowsのメモ帳は「UTF-8」で保存すると自動的に「BOM付き」で保存されます。

1. メモ帳を起動する

2. メモ帳でCSVファイルを開く

3. ファイルを上書き保存する

メモ帳で保存するだけなので方法としては簡単です。

文字化け対処方法3.
Flamingoのフックに引っ掛けてカスタマイズ

プラグイン内部に存在する「フィルターフック」に引っ掛けます。
テーマ内のfunctions.phpに以下コードを追記してください。

add_filter( 'flamingo_csv_quotation', 'my_filter_convert_encoding_csv', 11 );
function my_filter_convert_encoding_csv( $input ) {
	return mb_convert_encoding( $input, "SJIS", "UTF-8" );
}

これはCSVファイルをエクスポートする段階で、「UTF-8」→「Shift-JIS」に変換するコードです。
エクスポートしたCSVをそのままエクセルで開くことが可能になります。

まとめ

今回「Flamingo」でエクスポートしたCSVファイルを文字化けさせずにエクセルで開く方法を3つ解説しました。
基本的には「メモ帳で再保存」という方法が一番手っ取り早く無難な方法かと思いますが、
フックを使ったカスタマイズが出来る方であればそちらを使用しても大丈夫です。