PRELAPS 文字化け直し

Excel で CSV が文字化けするとき

CSV を Excel で開いたら 文字カテカナ のようになってしまう場合です。同じファイルをメモ帳やエディタで開くと正常に見えて Excel でだけ化けるなら、原因はファイルではなく Excel です。

なぜ Excel でだけ化けるのか

コンピュータは文字を数字に置き換えて保存しますが、その対応表が何種類もあります。今の標準は UTF-8 で、Windows が長く使ってきたのは地域ごとの表(日本語なら CP932=Shift_JIS 系)です。同じ数字でもどの表で読むかによって別の文字になります。

問題は CSV ファイルには「これは UTF-8 です」と書く欄がないことです。ただ文字が並んでいるだけなので、どのプログラムも推測するしかありません。最近のエディタは UTF-8 とみなしてくれますが、Excel は目印がないファイルをローカルのコードページで読んでしまいます。UTF-8 で保存された文字を CP932 の表で読むので、まったく別の文字が出ます。

Web サービスやデータベース、Python のスクリプトから書き出した CSV がよく化けるのはこのためです。そうしたツールはほぼ UTF-8 で保存しますが、目印を付けません。

3バイトの目印で直ります

BOM(Byte Order Mark)はファイルの先頭に付く 3バイトの目印です。目には見えず中身も変えませんが、これがあると Excel は「UTF-8 だ」と判断して正しく読みます。

つまり化けた CSV を直す作業は、多くの場合 文字を書き換えることではなく目印を付けることです。中身は最初から正常だったわけです。

このツールで直す

文字化け直しを開き、ファイルタブを選んで CSV をアップロードしてください。文字コードを判定して候補を表示します。文字が正しく読める候補を選び、UTF-8 でダウンロードを押します。

「Excel で開くファイルなら BOM を付ける」にチェックが入っているか確認してください。.csv.tsv.txt は既定でオンです。これを付けて受け取ったファイルは、Excel でそのまま開いても化けません。

ファイルはサーバーに送信されません。ブラウザの中だけで処理されるので、社内資料や個人情報を含むファイルでもそのままお使いいただけます。

ファイル自体が古い文字コードの場合

逆のこともあります。古いプログラムが作った CSV は実際に Shift_JIS で保存されていることがあり、UTF-8 を前提とするツール(最近の Python、Google スプレッドシート、macOS の Numbers)に入れると化けます。

これも同じ手順で解決します。ファイルタブにアップロードすると shift_jis が第1候補として出るので、UTF-8 でダウンロードすれば今のツールで読めるファイルになります。どちらの向きでも、まずアップロードしてみるのが先です — どちらなのかはツールが判定します。

二度と化けないように保存するには

Excel で作った表を人に渡すときは、名前を付けて保存 →「CSV UTF-8(コンマ区切り)」を選んでください。ただの「CSV(コンマ区切り)」はローカルのコードページで保存されるため、受け取った相手が macOS や Linux だとそちらで化けます。

自分でファイルを生成する側なら、UTF-8 で保存しつつ BOM を付けるオプションを有効にします。Python なら encoding='utf-8-sig' です。

それでも直らないとき

Excel で開いたときに 文字は正常なのに1列に全部入ってしまう場合は、文字コードではなく区切り文字の問題です。データタブの「区切り位置」でコンマを区切り文字に指定してください。

どの候補にも正しい文字が出てこない場合は、ファイルが作られた時点ですでに文字が化けていた可能性があります。その場合は ツール本文の「直らないときは」をご覧ください — 症状ごとの原因と対処をまとめています。