【しふとじす】

シフトJISコード とは?

最終更新:
💡 1バイトと2バイトを組み合わせて、日本語を表す

英数字や半角カナなどの1バイト文字と、漢字などの2バイト文字を組み合わせて日本語を表す文字エンコーディング。WindowsのCP932など、関連する方式の拡張や実装差にも注意が必要。読み書きする側で方式を合わせて使う。

📌 このページのポイント
1バイトと2バイトで、文字を表すA41アB1表95 5C1バイト1バイト2バイト5Cは「表」の後半のバイト955C+5Cだけを記号と誤認すると、処理を間違える保存した方式と、読み込む側の方式を合わせる
文字とバイトの対応例です。数値は16進数で、「表」の95と5Cは一つの文字として読みます。下段の+はバイトを組み合わせる意味で、数値の足し算ではありません。5Cだけを記号と誤認すると問題になります。
ひよこ ひよこ
シフトJISは、どんな文字コード?
ペンギン先生 ペンギン先生
文字をバイトの並びに対応付ける、日本語向けの方式だよ。英数字や半角カナなどは1バイト、漢字などは2バイトで表す。2バイト文字の先頭を見分け、次のバイトと組み合わせて読むんだ
ひよこ ひよこ
JISコードとは、どう違う?
ペンギン先生 ペンギン先生
JISの文字集合と、その文字をバイトにする方式を分けよう。例えばISO-2022-JPではエスケープ列で文字の扱いを切り替える。シフトJISはその切り替え列を使わず、バイトの範囲と並びで読み取る方式なんだ
ひよこ ひよこ
WindowsのCP932と、完全に同じ?
ペンギン先生 ペンギン先生
名前の扱いは実装によるよ。Windowsには日本語のコードページ932があり、Pythonではcp932とshift_jisが別の変換方式として用意されている。一方、WebのEncoding Standardではwindows-31jなどもShift_JISの名前として扱う。交換する文字が正しく変換できるか確認しよう
ひよこ ひよこ
ExcelのCSVは、必ずシフトJISなの?
ペンギン先生 ペンギン先生
必ずではないよ。保存した方式と読み込み方による。ExcelはBOM付きのUTF-8のCSVを通常の方法で開けるし、データ取り込みの機能もある。文字化けしたら、ファイルの保存時の文字コードと読み込み設定を確認するんだ
ひよこ ひよこ
5C問題って何?
ペンギン先生 ペンギン先生
例えば「表」は95 5Cという2バイトになる。この後半の5Cを、文字の一部として読まず、バックスラッシュやエスケープの記号と誤認すると問題になるよ。文字コードに対応した処理が必要で、UTF-8への変換でも元の方式を正しく指定しよう
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「シフトJIS」って出てきたら「1バイトと2バイトを組み合わせる日本語の文字コード」と思えばだいたいOK!
📖 おまけ:英語の意味
「Shift JIS」 = JISの符号位置をずらした方式
💬 shiftはずらすという意味だよ。JISの日本語文字を、1バイトの文字と共存できるバイトの並びに割り当てる方式を指すんだ

参考資料

← 用語集にもどる