文字コードを判定してファイルを開く
ファイルをここに落とす
ファイルはブラウザの中だけで読みます。どこにも送信されません。
ファイルを落とすと、文字コードを判定して中身を表示します。
貼り付けた文字列を直す場合は 文字化けを直す へ。 こちらはファイルを開くためのツールです。
文字コードとは何か
ファイルに保存されているのは文字ではなく、バイトの並びです。
どのバイトをどの文字に対応させるかの取り決めが文字コードで、
書いたときと読むときで取り決めが違うと、同じバイト列が別の文字に見えます。
日本語では UTF-8、Shift_JIS、EUC-JP が主に使われ、
ファイル自体には「どれで書いたか」が記録されていないため、読む側が推測することになります。
Excel で CSV を開くと文字化けする理由
Excel は、CSV ファイルを開くときに文字コードの見分けをほとんど行いません。
Windows 版の Excel は、判断がつかないファイルを Shift_JIS として開きます。
そのため UTF-8 で保存された CSV を開くと、日本語が
譁�ュ怜喧縺� のような文字に置き換わって表示されます。
BOM を付けると解決する
ファイルの先頭に BOM(バイトオーダーマーク)という3バイトの目印
EF BB BF を置くと、Excel はそれを見て UTF-8 と判断します。
中身は変わらず、先頭に目印が増えるだけです。
つまり 「UTF-8(BOM付き)」で保存すれば、Excel でそのまま開けます。 多くのツールが「UTF-8」と「UTF-8 (BOM付き)」を別の選択肢として持っているのは、このためです。 Excel 自身の「名前を付けて保存」にある CSV UTF-8 は、BOM 付きで書き出します。
| 保存の仕方 | Excel で開くと |
|---|---|
| UTF-8(BOMなし) | 日本語が化ける |
| UTF-8(BOM付き) | そのまま読める |
| Shift_JIS | そのまま読めるが、一部の文字が保存できない |
BOM は Excel には有効ですが、プログラムがファイルを読むときには余計な文字として扱われることがあります。 人が Excel で開くなら BOM 付き、プログラムに渡すなら BOM なし、と使い分けます。
どの文字コードを選べばいいか
迷ったら UTF-8(BOM付き)を選んでください。 Excel でそのまま開け、日本語のほぼすべての文字を保存できます。
- UTF-8 — 現在の標準。絵文字や旧字体も含め、扱える文字がいちばん多い
- UTF-8(BOM付き) — 上に Excel 向けの目印を足したもの。人に配る CSV はこれ
- Shift_JIS — 古い業務システムが指定してくる場合のみ。保存できない文字がある
- EUC-JP — 古い UNIX 系システム向け。新しく選ぶ理由はない
- ISO-2022-JP — 古い日本語メール向け。新しく選ぶ理由はない
- UTF-16 — Windows のメモ帳が「Unicode」と呼ぶ形式。ファイルが大きくなる
変換で文字が失われる場合
UTF-8 から Shift_JIS や EUC-JP に変換すると、移し替えられない文字が出ます。
Shift_JIS が定められた当時に存在しなかった文字は、対応するバイト列を持たないためです。
多くのソフトは、これらを黙って ? に置き換えます。置き換わった時点で元には戻りません。
Shift_JIS に移せない代表的な文字です。
- JIS 第3・第4水準の漢字 —
𠮟(叱の異体字)など。人名や地名に多く現れます - 絵文字 — Shift_JIS が定められた時代には存在しません
- 波ダッシュ
〜(U+301C) — 見た目のよく似た全角チルダ~(U+FF5E)とは別の文字です。 Mac や一部のシステムから来たテキストには〜が入っていることがあり、これは Shift_JIS に移せません
丸数字や㈱は失われません
① ㈱ № Ⅲ ㎡ は、
Windows の Shift_JIS(CP932)に含まれているため、変換しても保存できます。
ただしこれらは機種依存文字と呼ばれ、Shift_JIS を使う環境でも
Mac や古い携帯電話など、割り当てが異なる環境では別の文字に見えることがあります。
「消える」わけではなく「相手の環境によっては違って見える」という違いです。
確実に伝えたい文書では (1) 株式会社 のように書き下すのが安全です。
やむを得ず古い文字コードで保存する場合は、変換前に何が失われるかを確認してから行ってください。
人名の漢字が ? になったまま先方に渡る、といった事故を防げます。
文字列が化けている場合
すでに画面上で化けてしまっている文字列を直したいときは、
ファイルではなく文字列を扱う 文字化けを直す を使ってください。
æ–‡å—化㑠のように化けたテキストを貼り付けると、元の日本語に戻します。
ただし、画面に � が出ている場合は、その部分のデータはすでに失われています。
化けた画面からコピーするより、元のファイルをこのページで開くほうが確実です。