CP932 (Windows-31J, 1993)(シーピーキューサンニー)
Microsoft が Windows 3.1 (1993) で日本語処理用に策定した Shift_JIS 拡張コードページ。Shift_JIS 基本仕様に NEC 特殊文字・IBM 拡張文字・機種依存文字 (①②③・♠♥♦♣・ℓ㍻ 等) を追加、Windows 95/98/Me/2000/XP/Vista/7/8/10/11 の日本語システム文字コードとして君臨。
概要
CP932 (Code Page 932、通称 Windows-31J または MS932) は、Microsoft が Windows 3.1 (1993) で日本語処理用に策定した Shift_JIS 拡張コードページで、Windows 95/98/Me/2000/XP/Vista/7/8/10/11 の日本語システム文字コードとして 2026 年現在も使用されている重要な規格です。Shift_JIS 基本仕様に NEC 特殊文字 (①②③・I II III・㈱・㊊ 等)・IBM 拡張文字 (㍻㍼㍽ 等の元号合字)・機種依存文字 (♠♥♦♣・ℓ・①② 等) を追加し、合計約 7,879 字を扱えるようにしました。Microsoft Windows 内部実装で MBCS (Multi-Byte Character Set) として動作し、Shift_JIS と概ね互換ですが追加文字で微妙な差異あり。「Windows-31J」「MS932」「IBM-943」「IBM-942」「MS_Kanji」「CP932」など複数の名称で呼ばれることがあり、Web 開発・データ連携でのエンコーディング名混乱の元凶となっています。
主な特徴・仕組み
- 規格策定: 1993 年 Microsoft、Windows 3.1J リリースと同時
- ベース: Shift_JIS + Microsoft 独自拡張
- 追加文字 (NEC 特殊文字): ①②③④⑤⑥⑦⑧⑨⑩・I II III IV V・㈱・㊊㊋ 等
- 追加文字 (IBM 拡張文字): ㍻㍼㍽ (元号合字 平成/昭和/明治)
- 追加文字 (機種依存): ♠♥♦♣ (トランプ)・ℓ (リットル単位)
- 総文字数: 約 7,879 字
- Windows 内部実装: MBCS (Multi-Byte Character Set) ベース
- 別名称: Windows-31J・MS932・IBM-943・IBM-942・MS_Kanji・CP932
- Java 内部表現: MS932 (Sun Java) または Windows-31J (IBM Java) で呼出
- Python 標準:
cp932またはshift_jis_2004で指定可能
スペック比較表 (Shift_JIS 系)
| エンコーディング | 文字数 | 追加文字 | OS |
|---|---|---|---|
| Shift_JIS | 6,879 | なし | 各社 |
| CP932 (Windows-31J) | 約 7,879 | NEC + IBM 拡張 | Windows |
| Shift_JIS-2004 | 11,233 | JIS X 0213 | 一部 |
| MacJapanese | 約 8,000 | Apple 拡張 | Mac OS |
具体例・対応技術
- Windows 95 日本語版 (1995): CP932 標準、ファイル名・レジストリで採用
- Windows 11 日本語版 (2021-): CP932 デフォルト継続、UTF-8 はオプション
- Visual Studio (1995-): CP932 ソースコード対応、UTF-8 BOM 必須
- Excel/Office VBA: CP932 内部処理、文字化けトラブル多発の元凶
- SQL Server (Microsoft): NVARCHAR で Unicode、VARCHAR で CP932
自作PCでの選び方・注意点
2026 年現在も Windows 11 のデフォルトファイルシステム・cmd.exe・PowerShell・レジストリは CP932 を使用、UTF-8 ソースコード (Python・C++・JavaScript) のコンパイル・実行で文字化けトラブルが多発します。Windows 10 1903 以降で「言語設定 > 管理用の言語設定 > UTF-8 を使用」を有効化可能ですが、互換性問題で多くの環境が CP932 のまま。Visual Studio Code・JetBrains IDE で「文字コード自動判定」を有効化、UTF-8 with BOM・UTF-8 without BOM・CP932 の切替を頻繁に行う必要があります。chcp 65001 で UTF-8 切替後の Python 実行や、Git の core.autocrlf=input 設定なども含めて文字コード問題は Windows 開発者の永遠の課題。WSL2 (Windows Subsystem for Linux 2) は ja_JP.UTF-8 デフォルト、Windows と WSL2 間のファイル交換で CP932 ↔ UTF-8 変換が頻繁に必要。
関連用語との違い
- Shift_JIS: 基本規格、CP932 はその拡張版
- Shift_JIS-2004: JIS X 0213 対応、CP932 と異なる拡張
- UTF-8: 現代標準、CP932 の置き換え
よくある質問(FAQ)
Q1: Shift_JIS と CP932 の互換性は? A: 基本部分は完全互換、追加文字 (NEC/IBM 拡張・機種依存文字) で CP932 のみ表現可能。標準的な日本語テキストは両者で扱える。
Q2: 機種依存文字とは? A: ①②③・♠♥♦♣・ℓ・㍻ など Shift_JIS 標準外の文字、Windows でのみ正しく表示。Mac/Linux/メールで文字化けの原因。
Q3: Windows 11 で UTF-8 デフォルトにできる? A: 「Region settings > Administrative > UTF-8 for worldwide language support」で有効化可能だが、レガシーアプリで互換性問題が発生。多くの環境で CP932 のまま。
まとめ
- CP932 = 1993 年 Microsoft 策定の Shift_JIS 拡張コードページ
- NEC 特殊文字 + IBM 拡張文字 + 機種依存文字を追加
- Windows 3.1J 以降 Windows 11 まで日本語システム標準
- 別名 Windows-31J/MS932 で混乱しがち、UTF-8 移行が課題