ぱんだツールズぱんだツールズ

文字コード・エンコーディング

テキストファイルの文字化けを直す方法 — UTF-8・Shift_JIS・EUC-JPの変換手順

約6分

ダウンロードしたテキストファイルをメモ帳で開いたら「縺ゅ>縺・」のような呪文が並んでいた——そんな経験はないでしょうか。 これが「文字化け」で、原因はほぼ1つ:ファイルを保存した文字コードと、読み込むアプリの文字コードがズレていることです。 この記事では、文字化けの原因から、OS別・ツール別の修正手順、ブラウザで手軽に変換する方法まで、 実務ですぐ使える形で解説します。

文字化けの3大原因

テキストファイルの文字化けは、主に次の3つのパターンから発生します。 原因を正確に把握することで、対処方法が素早く選択できます。

1. 文字コードの不一致

コンピュータは文字を数値に変換して保存しています。「あ」という文字はShift_JISでは0x82A0、 UTF-8では0xE38182と、 文字コードによって異なる数値で表現されます。保存時はUTF-8、読み込み時はShift_JISのように解釈がズレると、 コンピュータは間違った表に照らし合わせてしまい、意味不明な文字列が表示されます。 これが文字化けの最も多い原因です。

2. BOMなしUTF-8をExcelが誤認する

Excelは日本語環境では既定でShift_JISを期待しています。 BOM(Byte Order Mark)という「UTF-8ですよ」という目印がないUTF-8ファイルを開くと、 Excelは「これはShift_JISだ」と誤解して読み込み、文字化けが起きます。 これはExcelとUTF-8の組み合わせで非常によく起きるパターンです。

3. 文字コード自体が宣言と不一致

HTMLやXMLには文字コードを宣言する箇所(charset属性など)がありますが、 実際のファイルの文字コードと宣言が食い違うと文字化けします。 たとえばファイルはShift_JISで保存されているのに<meta charset="UTF-8">と書かれていると、ブラウザはUTF-8として解釈して化けます。

文字コードの種類と特徴

日本語のテキストファイルを扱うときに登場する文字コードは主に4種類です。

文字コード特徴よく使われる場面今後の動向
UTF-8世界中の文字に対応。日本語は3バイトWeb全般・macOS・Linux・モダンアプリ事実上の世界標準
Shift_JIS日本語専用。日本語1文字は2バイトWindows版Excel・レガシー業務システム日本では根強く残存
EUC-JPUNIX系日本語処理で主流だった。日本語は2バイト古いLinuxサーバー・レガシーWebシステム徐々にUTF-8へ移行中
UTF-16日本語を2バイト固定で表現。BOMが必要Windowsの内部処理・一部のExcelファイルテキストファイルではほぼ使われない

現代の新規開発ではUTF-8一択が推奨です。レガシーシステムとのデータ連携でShift_JISやEUC-JPが必要になることがありますが、 内部処理はUTF-8で行い、連携部分でのみ変換するのがベストプラクティスです。

OSごとの文字化け修正手順

使っているOSやエディタに応じて、最適な修正手順を選んでください。

Windowsのメモ帳で修正する

Windows 10 バージョン1903以降のメモ帳では文字コードを指定して保存できます。

  1. 文字化けしたファイルをメモ帳で開く
  2. 「ファイル → 名前を付けて保存」をクリック
  3. ダイアログ下部の「文字コード」ドロップダウンで目的の文字コードを選択(例:UTF-8)
  4. 保存して開き直す

ただしメモ帳は文字化けした状態のまま保存しても中身は化けたままです。文字化けしている場合は、正しい文字コードで「再度開く」操作が必要で、 メモ帳にはその機能がありません。正しい文字コードで開き直すには、VSCodeや以下のブラウザツールを使います。

VSCodeで修正する

VSCode(Visual Studio Code)は文字コードの指定・変換が最も柔軟にできるエディタです。 無料でWindows・macOS・Linuxすべてに対応しています。

  1. 文字化けしたファイルをVSCodeで開く
  2. 右下のステータスバーに表示されている文字コード名(例:「UTF-8」)をクリック
  3. コマンドパレットに「エンコード付きで再度開く」を選択
  4. 元の文字コード(例:Shift_JIS)を選ぶと正しく表示される
  5. 今後のために正しい文字コードで保存する場合は「エンコード付きで保存」を選択

ポイント

「エンコード付きで再度開く」は「文字化けしたファイルを正しく読み込む」操作、 「エンコード付きで保存」は「別の文字コードに変換して保存する」操作です。 目的に応じて使い分けてください。

Macのテキストエディットで修正する

macOSのテキストエディットは文字コードの細かい指定には向いていません。 文字化けを修正するには、VSCode(無料)をインストールするのが確実です。 または後述するブラウザツールが最も手軽です。テキストエディットで保存する場合は 「フォーマット → プレーンテキストにする」を選択してからUTF-8で保存することで、 余計な書式情報を除いたシンプルなテキストファイルを作れます。

ブラウザツールで文字コード変換する方法

インストール不要で最も手軽な方法が、ぱんだツールズのブラウザツールを使う方法です。 ファイルはサーバーに送信されず、すべてブラウザ内で処理が完結するため、 機密情報を含むファイルでも安心して使えます。

  1. 文字コードを確認する:まず文字コード確認ツールにファイルをドロップして、現在の文字コードを自動判定します。
  2. テキストファイルの文字コードを変換するテキスト文字コード変換ツールにファイルをアップロードし、変換先の文字コードを選択してダウンロードします。
  3. CSVファイルはCSV専用ツールを使う:CSV形式のファイルはCSV文字コード変換ツールを使うと、区切り文字の扱いを保ちながらShift_JIS↔UTF-8を変換できます。

まとめ

  • テキストファイルの文字化けは保存時と読み込み時の文字コードのズレが原因
  • 主な文字コードはUTF-8・Shift_JIS・EUC-JPの3種類。新規開発ではUTF-8一択が推奨
  • BOMはExcelとの相性を改善するが、プログラムで処理するときは付けない方が安全
  • 修正方法は「VSCodeでエンコード付きで再度開く」→「エンコード付きで保存」が最も確実
  • ブラウザだけで変換したい場合はテキスト文字コード変換ツールが便利(サーバー送信なし)
  • 文字コードがわからないときは文字コード確認ツールで自動判定できる

よくある質問

テキストファイルの文字コードがわからないとき、どうやって見分けますか?

まず化け方のパターンで推測できます。「縺ゅ>縺・」のように読めない全角文字が並ぶ場合はUTF-8のファイルをShift_JISで読んだケース、「髢ィ縺・」はその逆です。「?」の連続はUTF-16 / UTF-32をUTF-8として読んだときに起きがちです。確実な方法はぱんだツールズの文字コード確認ツールにドロップして自動判定させるか、VSCodeで右下の文字コード表示を「エンコード付きで再度開く」で切り替えてみることです。

BOM(バイトオーダーマーク)とは何ですか?

BOM(Byte Order Mark)はファイルの先頭に置かれる3バイト(EF BB BF)の不可視データで、「このファイルはUTF-8で書かれています」という目印です。ExcelはBOMを見つけると正しくUTF-8として読み込みます。一方、多くのプログラム(Python・Node.js・各種ライブラリ)はBOMを余計なデータとして扱うため、処理するとバグの原因になることがあります。Excelで開くならBOM付き、プログラムで処理するならBOMなしを選ぶのが実務的な使い分けです。

VSCodeで文字コードを変えて保存する手順を教えてください。

VSCodeを使った変換手順は次の通りです。①ファイルをVSCodeで開く → ②画面右下のステータスバーに「UTF-8」「Shift_JIS」などの文字コード名が表示されているのでクリック → ③コマンドパレットに「エンコード付きで再度開く」と「エンコード付きで保存」の2択が出る → ④文字化けを直す場合は「エンコード付きで再度開く」で正しい文字コードを選んで内容を確認 → ⑤「エンコード付きで保存」で目的の文字コードを選んで上書き保存。UTF-8 with BOMはリストの中に「UTF-8 with BOM」として表示されます。

Windowsのメモ帳で保存すると文字化けする理由は何ですか?

Windows 10 バージョン1903(2019年5月)以降、メモ帳のデフォルト保存形式はUTF-8(BOMなし)に変更されました。しかし古いWindowsや一部のアプリは依然としてShift_JISを前提としているため、新しいメモ帳で保存したファイルを古い環境で開くと文字化けします。逆に古いメモ帳で保存したShift_JISファイルをUTF-8前提のアプリで開いても化けます。メモ帳の「名前を付けて保存」ダイアログ下部に文字コードを選択するドロップダウンがあるので、相手の環境に合わせて明示的に指定するのが安全です。

EUC-JPはまだ使われていますか?

EUC-JP(Extended Unix Coding)はUNIXサーバー上の日本語処理で広く使われていた文字コードで、2000年代前半まで多くのWebサイトや業務システムで標準的でした。現在はUTF-8への移行がほぼ完了していますが、レガシーな基幹システム・古いWebシステム・メールサーバー・組み込み機器では今でも現役です。システム間連携やデータ移行の現場でEUC-JPのファイルに遭遇することは珍しくないため、知識として把握しておく価値があります。

HTMLやXMLで文字コードを指定する方法を教えてください。

HTMLでは `<meta charset="UTF-8">` を `<head>` 内の最初のほうに書きます(HTML5以降)。古いHTML4の書き方は `<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">` です。XMLでは宣言行に `<?xml version="1.0" encoding="UTF-8"?>` を書きます。ただし重要なのは「ファイルの実際の文字コードと宣言が一致していること」です。ファイルはShift_JISで保存しているのにcharset=UTF-8と書くと、ブラウザはUTF-8として読もうとして文字化けします。

テキストファイルを一括で文字コード変換したいのですが、どうすればよいですか?

複数ファイルを一括変換する方法はいくつかあります。ぱんだツールズのテキスト文字コード変換ツールでは1ファイルずつ変換できます。複数ファイルを一括処理したい場合は、macOS/LinuxのターミナルでPythonを使う方法が手軽です。`for f in *.txt; do iconv -f SHIFT_JIS -t UTF-8 "$f" > "utf8_$f"; done` のようなシェルスクリプトで同一フォルダ内の全テキストファイルをShift_JISからUTF-8に変換できます。Windowsなら「nkf」コマンドをインストールして `nkf -w --overwrite *.txt` のように使えます。

文字化けしたままメールで送られてきたテキストを直す方法はありますか?

メールの文字化けはメールクライアントの文字コード自動判定が失敗したケースがほとんどです。まず試したいのは「メール本文の文字コードを変更する」オプションで、Thunderbirdなら「表示 → 文字エンコーディング」から別の文字コードを選ぶと読めるようになることがあります。添付ファイルが文字化けしている場合はいったん保存してから、ぱんだツールズの文字コード確認ツールで判定後、テキスト文字コード変換ツールで変換してください。それでも直らない場合は送信者側で文字コードを指定して再送してもらうのが確実です。

ファイルはサーバーに送信されますか?

ぱんだツールズのテキスト文字コード変換ツール・文字コード確認ツール・CSV文字コード変換ツールはすべてブラウザ内(JavaScript)で処理が完結します。ファイルや入力テキストはサーバーに一切送信されません。処理はお使いの端末上でのみ行われるため、機密情報を含むテキストや業務データも安心してご利用いただけます。

この記事で紹介したツール