エクセルでCSVが文字化けする。化け方を見れば原因が分かるんだよ

A君の成長

おはよう、後輩A君。

CSVを開いたら、こんな文字が並んでいたことはないかな。

蝠��刀繧ウ繝シ繝�

本当は「商品コード」なんだ。私も何度も見たよ。

⚠️ そしてこれ、相手の環境が悪いとは言えないんだよね。私はWindowsだけで仕事をしていたころにも、何度もやったんだ。エディタで開いて直して保存したら、次の人が開けなくなっていたんだよ。

今日は7通りのCSVを作って、1つずつ開いて測ったよ。⚠️ そうしたら、私が長いあいだ勘違いしていたことが1つ見つかったんだ。そこから書くね。

1. まず、7通り作って開いてみたんだよ

中身はどれも同じだよ。この3列4行だけなんだ。

商品コード,商品名,単価
101,キーボード,3500
102,USBメモリ,980
103,マウス,1200

違うのは保存のしかただけだね。

その前に「文字コード」という言葉を説明しておくね。ここが分かると、あとが全部つながるんだ。

⚠️ パソコンは、文字をそのまま持っていないんだよ。全部いったん番号に直して覚えているんだ。「あ」は何番、「商」は何番、というふうにね。

その番号と文字の対応表が文字コードなんだ。

⚠️ 困るのはここからでね。この対応表が、何種類もあるんだよ。

Shift-JIS → 昔からWindowsで使われてきた表
UTF-8   → いま広く使われている表(Mac・Linux・ネットはだいたいこれ)
EUC-JP  → 昔のLinuxなどで使われていた表
UTF-16  → UTF-8とは別の書き方をする表

⚠️ そしてファイルの中には、番号しか入っていないんだ。「どの表で読んでね」とは書かれていないんだよ。

だから書いた人と読む人が、違う表を見てしまうことがあるんだ。同じ番号を別の表で引くから、別の文字が出てくるんだよね。

⭐ これが文字化けの正体なんだ。文字が壊れているんじゃなくて、読む表を間違えているだけなんだよ。

では、保存のしかたを変えて試した結果だよ。開いたのはMacのExcelだね。

Shift-JIS + 改行はWindows式  → ⭕ ちゃんと読めた
Shift-JIS + 改行はMac式    → ⭕ ちゃんと読めた
UTF-8(BOMなし) + Mac式   → ⚠️ 蝠��刀繧ウ繝シ繝�
UTF-8(BOMなし) + Windows式 → ⚠️ 蝠��刀繧ウ繝シ繝�
UTF-8(BOMあり) + Mac式   → ⭕ ちゃんと読めた
UTF-16 + Windows式      → ⚠️ 文字は読めたが、⚠️ 列が分かれなかった
EUC-JP + Mac式        → ⚠️ セヲノハ・ウ。シ・ノ

⚠️ 「改行がWindows式・Mac式」は2章で、「BOM」は3章で説明するね。まずは文字コードのほうで結果が分かれているのが見えれば大丈夫だよ。
ここから1つずつ見ていくね。

2. ⚠️ 改行コードは、今回どちらでも結果が変わらなかったんだよ

まずここなんだ。私が勘違いしていたのはここだったんだよ。

まず「改行コード」って何なのか、そこから書くね。

Enterキーを押すと、画面では次の行に移るよね。⚠️ このときファイルの中には、目に見えない文字が入っているんだ。「ここで行が終わり」という合図の文字だよ。

⚠️ そしてこの合図、パソコンによって書き方が違うんだ。

Windows   → 合図を2文字並べる
Mac・Linux → 合図は1文字だけ

名前の由来は昔のタイプライターなんだ。紙に文字を打つ機械だね。あれで次の行に行くには、2つの動きが必要だったんだよ。

① 紙を左端まで戻す(この動きを CR と呼ぶ)
② 紙を1行ぶん送る(この動きを LF と呼ぶ)

Windowsはこの2つをそのまま2文字書いているんだ。だから CRLF と呼ばれるんだよ。Macは「1行送る」だけで済ませているんだ(LF だね)。

⚠️ やりたいことは同じなんだよ。次の行に行きたいだけなんだ。書き方が違うだけだね。

この記事ではこれを「Windows式」「Mac式」と呼ぶことにするよ。
「Macで作ったCSVが開けない」と聞くと、まずこれを疑いたくなるよね。私もそうだったんだ。

⚠️ でも測ったら、こうだったんだよ。

Shift-JISは、Windows式でもMac式でも読めた
UTF-8(BOMなし)は、Windows式でもMac式でも化けた

⚠️ 改行を直しても、文字化けは治らなかったんだ。

これは大事だと思うんだよね。⚠️ 改行コードを直しに行くのは、この症状には無駄足なんだ。私は昔、それで半日つぶしたことがあるよ。

⚠️ ただし「改行はどうでもいい」とは言えないんだ。私が測ったのはWindows式とMac式の2つで、しかもMacのExcelで開いた場合だけだからね。他の道具に渡すと関係してくることがあるんだ。今日はっきり言えるのは「文字化けの原因ではなかった」ということだけだよ。

3. UTF-8は「文字3つぶんの差」で結果が変わるんだよ

表の3番目と5番目を見てほしいんだ。どちらもUTF-8なのに、片方は化けて片方は読めたよね。

違いはBOMというものだけなんだ。「ボム」と読むよ。

1章で「ファイルには番号しか入っていなくて、どの表で読むかは書かれていない」と書いたよね。⭐ BOMは、その例外なんだ。

ファイルのいちばん先頭に貼る、小さな札だと思ってほしいんだ。札にはこう書いてあるんだよ。

「これはUTF-8という表で読んでね」

⚠️ 札の大きさは文字3つぶんだよ。それだけなんだ。

ファイルの中身を、番号を並べた形で覗いてみたんだ。

BOMなし → e5 95 86 e5 93 81 …(いきなり「商」の番号が始まる)
BOMあり → ef bb bf e5 95 86 e5 93 81 …(先頭に札が付いている)

この先頭の ef bb bf が札なんだよ。

⚠️ 札が無いと、ExcelはShift-JISだと思って読んでしまうんだよ。それで「商」を表す3つの番号を、Shift-JISの表で1つずつ引いてしまうんだ。だから見慣れない文字が3つ並ぶんだよ。あの不思議な文字列は、そうやってできているんだ。

⚠️ そして困るのは、この札は画面に出ないということだね。エディタで開いても、見た目はまったく同じなんだよ。

4. ⚠️ 「Macで作ったから」ではないんだよ

ここが今日いちばん書きたかったところだよ。

たしかにMacやLinuxで作ったファイルはUTF-8になりやすいんだ。だから「Macの人がCSVをくれると化ける」と言われるんだよね。

⚠️ でもWindowsだけで仕事をしていても、同じことが起きるんだ。私が何度もやったのはこれだよ。

① Windowsで、エディタでCSVを開いて中身を直す
② 保存するときに、文字コードの欄がUTF-8になっていた
③ ⚠️ そのまま保存 → Shift-JISではなくなった
④ 次の人が開いたら、化けていた

⚠️ 直したつもりで、壊していたんだよね。

原因は、エディタが前に開いたファイルの設定を覚えていることや、既定がUTF-8になっていることだったんだ。⚠️ 私は保存のときに文字コードの欄を見ていなかったんだよ。

⚠️ さらにややこしいのは、3章の話とつながるところだね。エディタの保存の選択肢には、こういうものが並ぶことがあるんだ。

UTF-8
UTF-8(BOM付き)

⚠️ この2つは別のファイルになるんだよ。⭐ Excelに渡すなら、選ぶのは「BOM付き」のほうなんだ。

だからこの話は「Macの人が気をつける話」じゃないんだよね。CSVを触る人みんなの話なんだ。⚠️ そして自分が壊した側になっていることに気づきにくいんだよ。自分の画面では読めているからね。

5. ⭐ 文字化けしないのに壊れるパターンがあるんだよ

表の6番目、UTF-16のところを見てほしいんだ。

⚠️ 文字はちゃんと読めたんだよ。「商品コード」も「キーボード」も正しく出たんだ。

でも、こうなっていたんだよ。

A1のセルに → 商品コード,商品名,単価(丸ごと1つのセルに入っている)
A2のセルに → 101,キーボード,3500

⚠️ 列が分かれていないんだ。カンマがそのまま文字として入っているんだよね。使われた範囲を測ったら、A列だけだったよ。

⚠️ これがこわいんだ。理由はこれだね。

文字化けしていないから、開いた瞬間は「大丈夫だ」と思ってしまう

文字化けは目が勝手に気づくんだよ。でもこれは、1列にまとまっていることに気づかないと進んでしまうんだ。⚠️ そのまま並べ替えたり集計しようとして、あとで「あれ?」となるんだよね。

セルの結合の記事やフィルタが途中で切れる記事でも同じことを書いたけれど、⚠️ 黙っている壊れ方のほうが、あとで高くつくんだ。

6. ⭐ 化け方を見れば、元の文字コードが分かるんだよ

ここが今日の持ち帰りだよ。化け方には型があるんだ。測った2つを並べるね。

蝠��刀繧ウ繝シ繝� ← 見慣れない漢字とカタカナが混ざる
セヲノハ・ウ。シ・ノ ← 半角カタカナと記号が並ぶ

上がUTF-8、下がEUC-JPだよ。早見表にするとこうだね。

見慣れない漢字が混ざる(蝠・繧・繝など)
→ 元は UTF-8。⭐ BOMを付けて保存し直す

半角カタカナと記号が並ぶ(・。シffなど)
→ 元は EUC-JP。⭐ Shift-JISで保存し直す

文字は読めるのに列が分かれない
→ 元は UTF-16。⭐ Shift-JISかUTF-8(BOM付き)で保存し直す

⚠️ 文字コードの中身を理解しなくていいんだ。症状を見て、型を当てるだけだよ。

⚠️ 「繧」や「繝」が並んでいたら、それはほぼUTF-8なんだ。私はこの2文字を覚えておくことにしたよ。UTF-8が化けると、この2つがよく出てくるんだよね。

7. 直し方は、3つあるんだよ

測った結果から言えるのは、この順番だね。

① エディタで保存し直す(測って確かめた方法だよ)

文字コードを Shift-JIS か UTF-8(BOM付き) にして保存する

⚠️ この2つはどちらも⭕だったよ。⭐ 迷ったらShift-JISでいいと思うんだ。BOMは「付けたつもりが付いていない」が起きるからね。

② Excelの読み込み機能で、文字コードを指定して開く

「データ」タブ → 「テキストまたはCSVから」 → 文字コードを選ぶ

⚠️ ただし正直に書くと、私はこの画面を測っていないんだ。エクセルの版によって場所も名前も違うからね。⚠️ ファイルを書き換えずに読めるのが利点だよ。相手からもらったファイルを触りたくないときは、こっちだね。

③ ⭐ 渡すときに、文字コードを一緒に伝える

「CSVを送ります」ではなく
「CSVを送ります。Shift-JISです」と書く

⚠️ 地味だけれど、これがいちばん効くと思うんだ。受け取った側が最初から正しく開けるからね。一言なんだよ。

8. ⚠️ 今日測れなかったこと

正直に書いておくね。今日の測定はMacのExcelで行ったんだ。

だから、こう言うことはできないんだよ。

❌ 「WindowsのExcelではこうなります」

⚠️ 環境が違えば結果が変わる可能性があるからね。今日言えるのはこれだけなんだ。

⭕ 「同じファイルでも、文字コードの違いで結果が分かれた」
⭕ 「改行の違いでは、結果が変わらなかった」

⚠️ そしてむしろ、これが今日の芯なんだと思うんだよ。

文字化けは「ファイルの問題」じゃなくて、「ファイルと、開く環境の組み合わせ」の問題なんだ

だから自分の画面で読めていても、証明にならないんだよね。4章で私が壊していたのは、まさにそれだったんだ。

9. エクセルの記事、これで17本目だよ

CSVがらみの記事は、実はこれで4本目なんだ。

CSVの数字が指数表示になる  → 見た目が変わる
先頭の0が消える       → 中身が減る
見えない空白がまぎれる    → 中身が増える
文字化け(今日)        → 中身が読めなくなる

⚠️ 全部「CSVを開く」という一手間で起きているんだよね。

CSVというのは、中身が文字の並びだけの、そっけないファイルなんだ。⚠️ だからこそ「どう読むか」を決める情報が入っていないんだよ。文字コードも、数字の桁も、先頭の0も、全部開く側が推測しているんだ。

⚠️ 推測が当たっているときだけ、うまく開いているように見えるんだよね。

結論:化け方を見て、型を当てるんだよ

今日測った結果をまとめるとこうだよ。

① ⚠️ 改行の書き方(Windows式・Mac式)では結果が変わらなかった。直しに行くのは無駄足
② UTF-8はBOMという小さな札(文字3つぶん)が付いているかで分かれる。⚠️ 画面には出ない
③ ⚠️ Windowsだけでも起きる。エディタの保存でUTF-8になっていることがある
④ ⚠️ UTF-16は文字化けしないのに列が分かれない。気づきにくい
⑤ ⭐ 化け方で元の文字コードが分かる(漢字混じり=UTF-8/半角カナ=EUC-JP)
⑥ 直すならShift-JISか、UTF-8(BOM付き)で保存し直す
⑦ ⭐ 渡すときに「Shift-JISです」と一言添える

私は昔、文字化けを見るたびに「相手が変なファイルをくれた」と思っていたんだ。

⚠️ でも4章のとおり、自分が壊した回数のほうが多かったんだよね。エディタで保存するときに、文字コードの欄を見ていなかっただけなんだ。

後輩A君も、CSVをエディタで開いて直すことがあると思うんだ。⚠️ そのとき保存の画面で、文字コードの欄を1回だけ見てほしいんだよ。

開いたときと同じ文字コードで保存する。それだけで、次の人が困らないんだ。

よくある質問

Q1. 自分の文字コードは、どうやって調べますか

エディタの画面の下の帯(ステータスバー)に出ていることが多いよ。「UTF-8」「SJIS」などと小さく書いてあるんだ。⚠️ 出ていないなら、設定で表示できることが多いね。⭐ 常に見えるようにしておくのがいちばんの予防だと思うんだ。保存のときに気づけるからね。

Q2. メモ帳で直せますか

できるよ。「名前を付けて保存」のときに文字コードの欄があるんだ。⚠️ 選ぶのは ANSI だね。これがWindowsでのShift-JISにあたるんだ。⚠️ ただし「UTF-8」を選ぶとBOMが付くかどうかが版によって違うので、ANSIのほうが確実だよ。⚠️ なおここは8章のとおり私の手元では確かめられていないんだ(Windowsが無いからね)。保存したあと、エクセルで開いて読めるか確かめてほしいな。

Q3. BOMを付けると、他で困りませんか

⚠️ 困ることがあるんだ。プログラムでCSVを読むとき、先頭の札が、1列目の中身に混ざってしまうことがあるんだよね。「商品コード」を探しているのに見つからない、という形で出るんだ。⇒ だから渡す先で決めるのがいいよ。⭐ Excelで開く人に渡すならBOM付き、プログラムに渡すならBOMなしだね。

Q4. そもそもCSVをやめたほうがいいですか

相手がエクセルを使えるなら、⭐ xlsxで渡すほうが安全だよ。文字コードの問題が起きないからね。⚠️ でもCSVには「どんな道具でも開ける」という強みがあるんだ。相手が何で開くか分からないときはCSV、相手がエクセルだと分かっているならxlsx、で使い分けるのがいいと思うんだ。

Q5. 化けたファイルを、元に戻せますか

⭐ たいてい戻せるよ。化けて見えているだけで、ファイルの中の番号は壊れていないことが多いんだ。正しい文字コードで開き直せば読めるからね。⚠️ ただし化けた状態で保存してしまうと戻せなくなることがあるんだ。⚠️ 化けた画面を見たら、まず保存せずに閉じるようにしようか。
【本日のミッション:保存の画面で、文字コードの欄を見てみようか】

  • ☐ ふだん使っているエディタで、文字コードが画面に出ているか確かめてみようか
  • ☐ 出ていなかったら、⚠️ 常に表示する設定にしてみようか
  • ☐ CSVを人に渡すとき、⭐ 「Shift-JISです」の一言を添えてみようか
  • ☐ (後輩A君へ)文字化けを見たら、⚠️ まず保存せずに閉じてほしいんだ。私は昔、化けた画面で「直そう」として上書きしたことがあるんだよ。⭐ 読めないだけなら戻せるけれど、保存すると戻せなくなることがあるんだ

📚 AI活用シリーズ(おすすめ)

▼ シリーズの全記事一覧を見る

コメント

タイトルとURLをコピーしました