UTF-8とShift_JISの違いは?文字化け・CSV・選び方を比較
同じ日本語でも、UTF-8とShift_JISでは対応できる文字、バイト列、得意な利用環境が異なります。Web、ExcelのCSV、古い業務システムで迷わないための判断基準を整理します。

最初に結論:新規はUTF-8、既存仕様があるときだけShift_JISを検討
UTF-8とShift_JISの違いを一言でまとめると、UTF-8は世界中の文字を扱うUnicode向けの現在の標準的な符号化方式、Shift_JISは日本語環境で長く使われてきた従来型の文字コードです。
- 新しいWebサイト、API、JSON、国際化するデータは、原則としてUTF-8
- 既存システムや取引先が「Shift_JIS」「SJIS」「Windows-31J」「CP932」を指定するCSVは、指定を確認して合わせる
- 文字化けは、保存時と読込時の文字コードが一致しないと起きるため、見た目だけでなく入出力条件を確認する
ファイルを変換する前に原本を残し、絵文字・外字・記号がある場合は、変換後の欠落や置換も確認してください。
1. UTF-8とShift_JISの違いを比較表で確認
文字コードは、文字を保存・送信するためのバイト列へ対応付ける決まりです。UTF-8とShift_JISは、同じ画面上の文字を別のバイト列で表すため、受け取る側が異なる方式で読むと正しく復元できません。
| 比較項目 | UTF-8 | Shift_JIS系 |
|---|---|---|
| 位置付け | Unicodeをバイト列にする符号化方式 | 日本語向けの従来型エンコーディング |
| 対応文字 | 多言語、記号、絵文字など広い範囲 | 日本語と英数字・記号が中心。表現できないUnicode文字がある |
| 1文字の長さ | 1〜4バイト。ASCII文字は1バイト、一般的な日本語は多くが3バイト | 1〜2バイトが中心。ASCII文字は1バイト、一般的な日本語は多くが2バイト |
| 主な用途 | Web、API、JSON、Linux、現代のアプリ間連携 | 古いWindowsソフト、国内の既存業務システム、指定形式のCSV |
| 新規採用 | 基本の選択肢 | 接続先の仕様で必要な場合に限定 |
| 注意点 | BOMの有無やソフト側の判定 | Windows-31Jとの違い、未対応文字、変換時の情報損失 |
WHATWG Encoding Standard は、UTF-8を新しいプロトコルや形式で使うべき符号化方式とし、Shift_JISをレガシーな日本語マルチバイトエンコーディングとして定義しています。したがって「日本語だけだからShift_JIS」と決めるのではなく、接続先の制約がなければUTF-8を選ぶのが安全です。
2. 同じ文字でもUTF-8とShift_JISではバイト列が違う
画面に表示される「A」「あ」「漢」が同じでも、ファイル内部の値は文字コードによって変わります。代表例を16進数で見ると違いが明確です。
| 文字 | UTF-8 | Shift_JIS | 確認ポイント |
|---|---|---|---|
A | 41 | 41 | ASCII範囲は同じ1バイト |
あ | E3 81 82 | 82 A0 | 日本語はバイト数も値も異なる |
漢 | E6 BC A2 | 8A BF | 誤った方式で読むと文字化けする |
| 絵文字 | 多くの絵文字を表現可能 | 通常は表現できない | 変換時に「?」や代替文字になる場合がある |

ファイルサイズだけを見れば、日本語中心の短いテキストではShift_JISの方が小さくなる場合があります。ただし、現代の通信では圧縮や互換性も関係するため、数バイトの差だけで採用方式を決めるべきではありません。
3. なぜUTF-8とShift_JISを間違えると文字化けするのか
文字化けは、UTF-8で保存したバイト列をShift_JISとして読む、またはその逆のように、書き込み側と読み込み側の前提がずれたときに起こります。たとえばUTF-8の「あ」は E3 81 82 ですが、Shift_JISの「あ」は 82 A0 です。読込方式を誤ると、別の文字の組み合わせとして解釈されたり、無効な並びとして代替文字に置き換えられたりします。
すでに文字化けした文字列を貼り付けて確認する場合は、当サイトの文字化け変換・復元ツールも使えます。ExcelでCSVを開く手順はExcel・CSVの文字化け直し方で詳しく説明しています。
4. Shift_JISとWindows-31J(CP932)は完全には同じでない
Windowsの日本語環境で「Shift_JIS」と呼ばれているデータが、実際にはWindows-31J(コードページ932、CP932)であることがあります。Windows-31JはShift_JIS系の拡張で、NEC選定IBM拡張文字やIBM拡張文字などを含みます。
この違いは、丸付き数字、ローマ数字、特殊な漢字、記号などを含むデータで問題になりやすい点です。また、波ダッシュなど一部記号は実装や変換表によって対応関係が問題になることがあります。「Shift_JISで保存」とだけ書かれた仕様では、次の点を確認してください。
- 指定は厳密なShift_JISか、Windows-31J / CP932か
- 送信側と受信側が同じ変換表を使うか
- 対象データに外字・機種依存文字・絵文字が含まれないか
- 変換できない文字をエラーにするか、代替文字へ置き換えるか
5. CSV・Excelではどちらを選ぶ?用途別の判断
CSVには文字コードを必ず宣言する共通の仕組みがないため、作成側と受取側の合意が重要です。「Excelで開くからShift_JIS」と固定せず、利用するExcelのバージョン、読み込み方法、連携先の仕様を確認します。
| 利用場面 | 第一候補 | 理由・確認事項 |
|---|---|---|
| Webからダウンロードする新しいCSV | UTF-8 | 多言語や記号を保持しやすい。Excel向けにBOM付き指定が必要か確認 |
| 古いWindows業務ソフトへ取り込むCSV | 指定されたShift_JIS系 | 「CP932」「Windows-31J」を含め、取込仕様を優先 |
| Mac・Linux・Windows間で共有 | UTF-8 | OSをまたぐデータ交換に向く |
| 絵文字・多言語名・特殊記号を含む | UTF-8 | Shift_JISでは表現できない文字がある |
| 取引先テンプレートへ提出 | 相手の指定 | 見本ファイル、改行コード、区切り文字、BOMも合わせる |
ExcelでUTF-8のCSVを安全に開くには、ダブルクリックだけでなく「データ」からテキスト/CSVを取り込み、文字コード候補とプレビューを確認する方法が有効です。保存し直す場合も、出力形式に「CSV UTF-8」などがあるかを確認します。
6. UTF-8のBOMあり・なしは何が違う?
UTF-8のBOMは、ファイル先頭に置かれる EF BB BF という3バイトの印です。UTF-8にはバイト順の違いがないため、本来の「バイト順を示す」目的ではなく、UTF-8であることを判定する目印として使われます。
- Web、プログラムのソース、JSON: 通常はBOMなしを選ぶ場面が多い
- Excelで直接開くCSV: 環境によってはBOM付きUTF-8の方が判定されやすい
- 外部システム連携: BOMをデータの一部として誤認する実装もあるため仕様を確認
「UTF-8なら必ずBOM付き」でも「BOMは常に不要」でもありません。受け取るソフトが何を期待しているかで判断します。
7. UTF-8とShift_JISを安全に変換する手順
- 原本をコピーする: 変換失敗時に戻せる状態を作ります。
- 現在の文字コードを確認する: エディタの表示、送信元の仕様、HTTPヘッダー、CSVの作成元を照合します。
- 出力先の指定を確認する: UTF-8かShift_JISだけでなく、BOM、Windows-31J、改行コード、区切り文字も確認します。
- 未対応文字を検査する: 絵文字、外字、丸付き数字、特殊記号、氏名の異体字を含むサンプルで試します。
- 変換後を受取側で開く: 変換ツールのプレビューだけで終えず、実際のExcelや連携システムで確認します。
- 往復テストを行う: 重要データはUTF-8→指定形式→UTF-8と戻し、文字が欠落していないか比較します。
文字コードそのものの基礎やUnicode・コードポイントを確認したい場合は、文字コード変換の解説も合わせて参照してください。
8. UTF-8とShift_JISのよくある質問
まとめ
- UTF-8はUnicodeを扱う現在の標準的な符号化方式で、新しいWebやデータ交換の第一候補
- Shift_JISは日本語の既存Windows・業務システムで必要になることがある
- Shift_JISとWindows-31J(CP932)は完全には同じではない
- CSVでは文字コードに加え、BOM、改行、区切り文字、受取側の仕様まで確認する
- 変換前に原本を残し、未対応文字と往復変換をテストする
参考情報
- WHATWG Encoding Standard(UTF-8とレガシーエンコーディングの定義)
- Unicode Consortium: UTF-8, UTF-16, UTF-32 & BOM FAQ
- Microsoft Learn: Code Page Identifiers(コードページ932の確認)
関連記事
Excel・CSVの文字化け直し方
UTF-8・Shift_JISを指定してCSVを開く具体的な手順を確認できます。
文字コード変換の基礎
Unicode、ASCII、コードポイント、16進数の関係を整理できます。
ASCIIコードとは?
UTF-8とShift_JISで共通するASCII範囲の基礎を確認できます。