Shift_JIS
日本語向けの文字エンコーディング。レガシーシステムで広く使われているが、現在は UTF-8 への移行が進んでいる。
Shift_JIS は、日本語テキストを表現するための文字エンコーディングです。1982 年にマイクロソフトとアスキーが共同で策定し、MS-DOS や Windows で標準的に使用されてきました。JIS X 0201 (半角英数字・半角カナ) と JIS X 0208 (漢字・全角文字) を組み合わせた可変長エンコーディングで、日本の IT 史において最も影響力のある文字コードの一つです。
Shift_JIS では半角英数字は 1 バイト、日本語 (ひらがな・カタカナ・漢字) は 2 バイトで表現されます。UTF-8 では日本語が 3 バイトになるため、日本語テキストに限ればバイト効率は Shift_JIS の方が優れています。ただし、Shift_JIS の収録文字数は約 7,000 字 (JIS 第一・第二水準) に限られ、Unicode の 14 万字以上と比べると大幅に少なくなります。絵文字や一部の漢字 (JIS 第三・第四水準) は表現できません。文字コードの歴史に関する書籍で Shift_JIS の成り立ちを学べます。
Shift_JIS には「5C 問題」と呼ばれる有名な技術的課題があります。バックスラッシュ (0x5C) が日本語の 2 バイト目に出現する文字 (「表」「能」「ソ」など) があり、C 言語のエスケープ文字と衝突してプログラムが誤動作する原因になります。この問題は「ダメ文字」とも呼ばれ、Shift_JIS を扱うプログラミングでは常に注意が必要でした。
現在は UTF-8 への移行が世界的に進んでおり、Web の 98% 以上が UTF-8 を使用しています。しかし、日本のビジネス環境では Shift_JIS が依然として必要とされる場面があります。Excel で CSV ファイルを開く際のデフォルトエンコーディングが Shift_JIS であること、銀行や行政のレガシーシステムが Shift_JIS を前提としていること、EDI (電子データ交換) の一部規格が Shift_JIS を指定していることなどが理由です。
Shift_JIS と UTF-8 の変換時に文字化けが発生することがあります。特に「〜」(波ダッシュ、U+301C) と「~」(全角チルダ、U+FF5E) の変換、「−」(全角マイナス) と「-」(マイナス記号) の変換はトラブルの原因になりやすい文字です。Windows の CP932 (Windows-31J) は Shift_JIS の拡張版で、NEC 特殊文字や IBM 拡張文字を含むため、純粋な Shift_JIS との互換性にも注意が必要です。
文字数カウントの観点では、Shift_JIS と UTF-8 で同じテキストのバイト数が異なる点が重要です。日本語 1 文字は Shift_JIS で 2 バイト、UTF-8 で 3 バイトです。データベースのカラムサイズやファイルサイズの見積もりでは、使用するエンコーディングを考慮する必要があります。文字数カウントツールでは、文字数とバイト数を両方表示し、エンコーディングごとのバイト数の違いを可視化することで、ユーザーの実務に役立つ情報を提供できます。レガシーシステム移行の書籍でも文字コード変換は重要なトピックです。