Shift_JISとUTF-8の違い:バイト数、扱える文字、いま使うならどちらか
更新日:2026-09-17
日本語を扱う文字コードはいくつかあります。現在のWebでは UTF-8 が標準ですが、古いシステムやCSVのやりとりでは Shift_JIS が残っています。違いを整理します。
同じ文字でもバイト列が違う
| 文字 | UTF-8 | Shift_JIS | EUC-JP |
|---|---|---|---|
| あ | E3 81 82(3バイト) | 82 A0(2バイト) | A4 A2(2バイト) |
| A | 41(1バイト) | 41(1バイト) | 41(1バイト) |
英数字はどれも1バイトで同じです。ASCIIの範囲は共通なので、英数字だけのファイルなら文字コードを間違えても化けません。日本語が入ったところで違いが出ます。
1文字あたりのバイト数
| 文字の種類 | UTF-8 | Shift_JIS |
|---|---|---|
| 英数字・半角記号 | 1バイト | 1バイト |
| 半角カナ | 3バイト | 1バイト |
| ひらがな・カタカナ・漢字 | 3バイト | 2バイト |
| 一部の漢字・絵文字 | 4バイト | 扱えないものがある |
日本語だけを見れば Shift_JIS のほうがバイト数は少なくなります。これは Shift_JIS が日本語専用に設計されているためです。
扱える文字の範囲
大きな違いはここです。
- UTF-8 … 世界中の文字を扱える。日本語・中国語・韓国語・アラビア語・絵文字などが1つの文字コードで混在できる
- Shift_JIS … 日本語向け。扱える文字が限られ、絵文字や一部の漢字は表せない
当サイトのツールでは、Shift_JIS で書き出せる文字を実行時に調べています。ブラウザが持っている変換表を総当たりして作る方式なので、ブラウザの対応とずれません。Shift_JIS で扱える文字は7,000文字あまりです。
機種依存文字の問題
Shift_JIS には、メーカーごとに独自に追加された文字があります。丸数字(①②)、ローマ数字(ⅠⅡ)、「㈱」「℡」などです。
これらは環境によって別の文字に化けることがあります。異なるシステム間でやりとりするデータでは避けられることが多い文字です。
なぜ UTF-8 が標準になったのか
- 1つの文字コードで多言語を扱える … 言語ごとに文字コードを切り替える必要がない
- ASCIIと互換性がある … 英数字部分は同じバイト列なので、既存の仕組みがそのまま動く
- バイト列の切れ目がわかる … 途中のバイトから読み始めても、文字の境界を見つけられる設計になっている
③は実務で効きます。Shift_JIS では2バイト目がASCIIの範囲に重なることがあり、バイト列を単純に処理すると壊れることがあります。
Shift_JIS がいまも残っている場面
- 古い業務システムからの出力
- Windows版の表計算ソフトで作ったCSV
- 行政や金融機関が配布する一部のデータ
- 組み込み機器のログ
受け取る側が対応していないと文字化けします。どちらで受け渡すかは、相手のシステムに合わせることになります。
変換するときの注意
UTF-8 から Shift_JIS への変換では文字が落ちることがあります
UTF-8 で書けても Shift_JIS では表せない文字があります。絵文字、一部の漢字、外国語の文字などです。変換するとその文字が失われるか、別の文字に置き換わります。逆方向(Shift_JIS → UTF-8)では失われません。
変換の方向によって情報が減るかどうかが変わる点は、データを渡す前に確認しておくところです。
まとめ
- 同じ文字でも文字コードによってバイト列が違う
- 日本語1文字は UTF-8 で3バイト、Shift_JIS で2バイト
- UTF-8 は世界中の文字を扱え、Shift_JIS は日本語向けで範囲が限られる
- UTF-8 から Shift_JIS への変換では文字が落ちることがある
- 英数字だけなら、どの文字コードでも化けない
この記事の位置づけ
仕様と一般的な動作を整理したものです。実際の挙動はブラウザやアプリの実装、受け取り側のシステムによって変わることがあります。業務で使う場合は、実際のデータで往復して確かめておくと安全です。
参考・出典
- RFC 3986: Uniform Resource Identifier (URI)
- RFC 4648: The Base16, Base32, and Base64 Data Encodings
- WHATWG Encoding Standard
※2026年9月時点の仕様と、主要なブラウザでの動作にもとづいています。