FE EXAM

Shift_JIS(ずらして配置した日本語コード)

JISコードをずらして配置した、Windows等で広く使われた日本語文字コード

DIAGRAM
1バイト文字第1バイト第2バイト
Shift_JIS のエンコーディング方式バイト値(0x00〜0xFF)の使い分け00–1F制御コード(避ける)20–7EASCII(1バイト)81–9F / E0–EF2バイト文字の第1バイトA1–DF半角カナ(1バイト)40–7E / 80–FC2バイト文字の第2バイト(制御域を避ける)漢字1文字 = 第1バイト + 第2バイト第1バイト0x81–0x9F / 0xE0–第2バイト0x40–(制御を回避)=設計の核心第1バイトを ASCII の空き領域に「ずらして」配置。第2バイトは制御コード領域(00–1F)を避ける。「シフト(ずらし)」の意味JISコード(区点)区点番号 → そのままでは制御域と衝突ずらすShift_JISコードASCII の空き領域に再配置 → 共存OKこの設計のメリット・モード切替(エスケープ)なしで ASCII と漢字を1つの流れに混在できる・1バイト目を見れば「ここから2バイト文字」とすぐ判別できる
解説

📌
Shift_JISとは

JISの番号を「ずらして」使いやすくJISコードshiftShift_JISASCII と漢字を1つの流れに共存させる

Shift_JIS(シフトジス)とは、JISコードの文字番号を別の値に「ずらして(shift)」配置し直した日本語文字コードです。JIS X 0208の漢字を、ASCIIの1バイト文字とぶつからない空き番号に再配置することで、両者を1つの文章の中で自然に混ぜられるようにしました。

身近な例で言うと、満員の駐車場で、空いている区画に車をずらして停めるのに似ています。ASCII(英数字)がすでに使っている番号を避け、漢字を空いている番号にずらして停める──だから名前に「シフト(ずらし)」が付いています。

Shift_JISは特にWindowsやガラケーなどPCの日本語環境で長年の標準として使われ、多くの日本語ファイル・ソフトで採用されてきました。上の図解では、どのバイト値がASCII用・第1バイト用・第2バイト用に割り当てられているかをまとめています。

🧩
設計の特徴

Shift_JISの設計で最も巧妙なのが「2バイト文字の各バイトを、制御コードや一部のASCIIとぶつからない位置に配置した」点です。これにより、特別な切り替え記号(エスケープ)なしで1バイト文字と2バイト文字を混在させられます。

具体的な工夫は次のとおりです。
第1バイト0x81〜0x9F0xE0〜0xEF 付近を使う。これはASCII(0x00〜0x7F)が使わない領域なので、見ただけで「2バイト文字の始まり」と分かる
第2バイト0x40〜0x7E0x80〜0xFC を使い、制御コード領域(0x00〜0x1F)を避ける
半角カナ0xA1〜0xDF に1バイトのまま残す(JIS X 0201と同じ)

なぜ制御コード領域を避けるのかというと、当時のソフトやプリンタが 0x00〜0x1F を「特別な命令」として解釈してしまうからです。もし漢字の一部にこの値が混ざると、改行や画面クリアなどの誤動作を起こします。Shift_JISはこの危険な領域を巧みに避けることで、既存のシステムでもそのまま日本語を扱えるようにしました。

ただし注意点として、第2バイトに「\」や「[」などASCII記号と同じ値が現れることがあります。これがプログラムで「ダメ文字(5C問題)」と呼ばれる文字化けの原因になります。この欠点は、後述のEUC-JPやUTF-8と対比すると理解しやすくなります。

💻
利用環境

日本語コードの使われ方(主な傾向)WindowsShift_JISUNIX系EUC-JPWeb / 現在UTF-8現在はUTF-8への移行が進んでいる

Shift_JISは、長らくWindowsパソコンやガラケーなどPC・組み込み機器の日本語環境で標準的に使われてきた文字コードです。Windowsの「メモ帳」で日本語を保存すると、かつては既定でShift_JIS(厳密にはその拡張のCP932)が使われていました。

同じ日本語でも、システムによって使われる文字コードに傾向がありました。
Shift_JIS:Windows・古い携帯電話・多くのPCアプリ
EUC-JP:UNIX系のサーバーやワークステーション
JISコード(ISO-2022-JP):電子メール
このように環境ごとにコードが異なったため、ファイルをやり取りすると文字化けが起きやすいという問題がありました。

現在は世界中の文字を1つで扱えるUnicode(UTF-8)への移行が進み、Web・スマホ・新しいアプリではUTF-8が標準です。それでも古いシステムやファイル、CSVデータなどでShift_JISが残っているため、文字化けを直す場面で知識が役立ちます。文字コードは「Shift_JIS=Windows系」「EUC=UNIX系」「ISO-2022-JP=メール」「現在はUTF-8が主流」という対応で整理しておくとよいでしょう。

関連コンテンツ