| MIME / IANA | Windows-31J |
|---|---|
| エイリアス | CP943C |
| 言語 | 日本語 |
| 標準 | WHATWGエンコード標準(「Shift_JIS」として)[1] |
| 分類 | 拡張ASCII、[a] 可変幅エンコーディング、CJKエンコーディング |
| 拡張 | シフトJIS |
| |
Microsoft Windows コード ページ 932 (略称MS932、[2] [3] Windows-932 [3]またはあいまいにCP932 [4] ) は、他の名前の中でもWindows-31Jとも呼ばれ (以下の § 用語を参照)、 Microsoft Windows の 日本語コードページであり、 Shift JIS日本語文字エンコーディングの拡張版です。標準の 7 ビットASCIIコードが含まれ、日本語の文字は最初のバイトの上位ビットが 1 に設定されて示されます。このページの一部のコード ポイントは 2 番目のバイトを必要とするため、文字のエンコーディングには 8 ビットまたは 16 ビットが使用されます。
IBMは、コードページ943(IBM-943またはCP943)で同じ拡張2バイトコードを提供しています。 [5]これは、シングルバイトのコードページ897と2バイトのコードページ941を組み合わせたものです。[6]
Windows-31J は、ウェブ上で最も多く使用されている非UTF-8 /Unicode 日本語エンコードです。しかし、Microsoft ライブラリを含む多くの人々やソフトウェア パッケージ[7]は、Windows-31J データにShift JISエンコードを宣言していますが、これにはいくつかの追加文字が含まれており、既存の文字の一部はUnicodeshift_jisに異なる方法でマッピングされています。このため、WHATWG HTML 標準ではエンコード ラベルとを互換的に扱いwindows-31j、Windows バリアントを "Shift_JIS" エンコーダーとデコーダーとして使用しています。[1]
用語
Microsoft の Shift JIS バリアントは、Microsoft Windows では単に「コード ページ 932」として知られていますが、これは曖昧です。IBMのコード ページ 932は、Shift JIS バリアントではあるものの、Microsoft バリアントに存在する NEC および NEC が選択した 2 バイト ベンダー拡張がなく (ただし、両方とも IBM 拡張を含む)、JIS X 0208 の 1978 順序が保持されているからです。[5]
IBM のコード ページ 943 (または「IBM-943」) には、Windows コード ページ 932 と同じ 2 バイト コードが含まれています。 [5] Microsoft のバージョンは、International Components for Unicode (ICU)でibm-943_P15A-2003 (別名CP943CおよびWindows-932 ) [3]と呼ばれるエンコードにほぼ対応しています。また、 ibm-943_P130-1999 [8]という 2 番目の ICU エンコードもあり、これは IBM のコード ページ定義にさらに一致する異なる 1 バイト マッピングを使用します。(詳細については、以下の § 1 バイト文字の違いを参照してください。)
Windowsコードページ932は、IANAにWindows-31Jとして登録されています。[9]「Windows-31J」ラベルはIANAのものであり、Microsoftには認識されていません。Microsoftはこれまで「shift_jis」を代わりに使用してきました。[7] HTML5で使用されるW3C / WHATWGエンコード標準は、「展開されたコンテンツと互換性がある」という意図で、「 shift_jis 」ラベルを「windows-31j」と交換可能に扱い、 [10] Windowsコードページ932と一致します[1](「IBMとNECの以前の独自の拡張機能」を含む)。[11]
Windowsコードページ932はMS_Kanjiとも呼ばれるが[ 3] [12]、IANAはMS_Kanjiを標準Shift JISの別名として扱っている。[9] たとえばPythonはMS-Kanji、Windows-932にはラベル(または)を使用し、 JIS X 0208定義のShift JISにはcp932ラベルShift_JIS(または)を使用するが、ラベルを認識できない。[12]sjisWindows-31J
Windows の日本語版では、このコード ページは、その定義にANSI が関係していない にもかかわらず、オペレーティング システムのデフォルトの 8 ビット エンコーディングであるため、「ANSI」と呼ばれます。
標準シフトJISとの違い
Windows-31J は、標準の Shift JIS ( JIS X 0208 :1997 付録 1で定義) と間違われることがよくあります。似ていますが、文字化けを避けたいコンピュータ プログラマにとっては、この違いは重要です。
2バイト文字の違い

Windows-31Jには、標準のJIS X 0201 :1997およびJIS X 0208 :1997文字に加えて、いくつかのJIS X 0208拡張、すなわち「 NEC特殊文字(行13)、NEC選択のIBM拡張(行89から92)、およびIBM拡張(行115から119)」[9]が含まれており、さらにエンドユーザー定義用にいくらかのエンコード空間が確保されています。[13]これも、NEC拡張やNEC選択を含まないIBM-932とは異なります。 [5]
IBM拡張は、当初JIS X 0208には存在しなかったIBM日本語DBCSホスト・レパートリーの文字をエンコードするために設計された。 「because」記号∵と「not」記号¬は、後に1983年にJIS X 0208自体に追加され、マイクロソフトはそれらを1983年の位置だけでなく拡張の位置にも含めた。[14] NEC拡張もIBMレパートリー全体をエンコードするが、JIS X 0208の範囲外のシフトJISコードを使用するのではなく、94×94 JIS X 0208グリッド内の別の拡張(行89〜92、NEC行13にすでに含まれている文字の他に)にエンコードする。Windowsコードページ932には、両方の場所にこれらの388文字が含まれている。[14]結果として、because記号とnot記号は3回エンコードされる。
これらの表現の一部は、その後、 JIS X 0213とShift JIS-2004で異なる文字に使用されるようになりました。たとえば、JIS X 0213の89行目(硃、硎、硏…で始まる)[15]とIBM/NEC拡張付きJIS X 0208で使用される89行目(纊、褜、鍈…で始まる)[16]を比較してください。その結果、Shift JIS-2004はWindows-31Jと互換性がありません。
上記に加えて、マイクロソフトは、いくつかの2バイト句読点文字に対して、標準のShift JISとは異なる(ただし見た目は似ている)Unicodeマッピングを使用しています。たとえば、波ダッシュはU+301CではなくU+FF5Eにマッピングされています[17] 。その後にibm-943_P15A-2003 [18]が続きますが、ibm-943_P130-1999は続きません[19]。また、2バイトのバックスラッシュには異なるマッピングを使用しています。[17]
シングルバイト文字の違い
Windows-932には、最上位ビットが 0 に設定された 1 バイト シーケンス用の標準 7 ビットASCIIマッピングが含まれています。したがって、コード 0x5C と 0x7E は、ASCII ( ISO-646 -US )の場合と同様に、それぞれU+005C REVERSE SOLIDUS ( \、バックスラッシュ)と U+007E TILDE ( ) として Unicode にマッピングされます[20] [21] [17]。これは、W3C/WHATWG エンコード標準でも同様に行われます。[22]一方、0x5C はISO-646-JPではU+00A5 YEN SIGN ( )にマッピングされ、その結果、標準Shift JISが拡張されたJIS X 0201にマッピングされます。同様に、Windows-31Jは、ダブルバイト0x815FをU+FF3C FULLWIDTH REVERSE SOLIDUSにマッピングすることで、バックスラッシュの重複エンコードを回避します。一方、標準のShift JISでは、バックスラッシュはU+005Cにマッピングされます。[17]~¥
しかし、Windows-932の0x5Cは、特定のコンテキストでは円記号と見なされます。[23]このため、多くの日本語フォントでは、U+005Cは円記号として表示されますが、これは通常、Unicodeの推奨レンダリングによるバックスラッシュではなく、U+00A5として表されます。U+00A5は、Windows-932の0x5Cに一方向の最適マッピングされています。ただし、Windows-932のコード0x5Cは、一部のフォントで表示される方法を除き、すべての点(Windowsシステムのファイルパスなど)で逆ソリダス(バックスラッシュ)として動作し、 [23] MicrosoftのWindows-932のドキュメントでは、0x5Cがバックスラッシュとして表示されます。[21]このマッピング[20]は、いくつかのC0制御文字のわずかな順序変更を除いて、国際Unicode構成要素(ICU) [3]の「ibm-943_P15A-2003」というエンコーディングに対応しています。
IBM-943 は、IBM-932と同様に、[5]シングルバイトのコードページ 897のスーパーセットです。[6] 0x5C を円記号 ( ¥) に、0x7E を上線 ( ‾) にマッピングします。[24]これに続いて、ICU では「ibm-943_P130-1999」というエンコードが続きます。[8]コードページ 897 (したがって IBM-943 と IBM-932 も) では、特定のC0 制御文字を置き換えるシングルバイトのボックス描画文字も追加されます。[24]ただし、これらはコンテキストに応じて制御文字として扱われる場合があり、[25] ICU では制御文字にマッピングされます。[8]
レイアウト
参照
参考文献
- ^ abc Mozilla Foundation . 「IANA 命名との顕著な違い」. Crate encoding_rs . docs.rs.
- ^ Sivonen, Henri. 「バグ 27851 - Shift_JIS のラベルとして MS932 を追加」。w3.org Bug Tracker。
- ^ abcde 「Converter Explorer: ibm-943_P15A-2003 (alias windows-31j)」。International Components for Unicode: ICU デモ。
- ^ 青木 修. 「第11章 データ変換」. Debian リファレンス. Debian.
- ^ abcde 「IBM-943 および IBM-932」。IBM Knowledge Center。IBM。
- ^ ab 「コード化文字セット識別子 - CCSID 943」。IBM Globalization。IBM。2016年3月15日時点のオリジナルよりアーカイブ。
- ^ ab "Encoding.WindowsCodePage プロパティ - .NET Framework (現在のバージョン)". MSDN . Microsoft.
- ^ abc 「Converter Explorer: ibm-943_P130-1999」。Unicodeの国際コンポーネント: ICU デモンストレーション。
- ^ abc 「文字セット」。IANA。
- ^ アン・ファン・ケステレン。 「4.2. 名前とラベル」。エンコーディング標準。なんてことだ。
- ^ アン・ファン・ケステレン。 「5. 索引(§ 索引 jis0208)」。エンコーディング標準。なんてことだ。
- ^ ab "7.2.3. 標準エンコーディング". Python 3.6 ドキュメント. Python Software Foundation . 2017 年9 月 19 日閲覧。
- ^ Kaplan, Michael S (2007-05-26). 「Unicode 以外の PUA」。すべてを整理する。
- ^ ab Lunde, Ken (2009). 「付録 E: ベンダー文字セット標準」(PDF) . CJKV 情報処理: 中国語、日本語、韓国語、ベトナム語コンピューティング(第 2 版).セバストポル、カリフォルニア州: O'Reilly . ISBN 978-0-596-51447-1。
- ^ 日本工業標準調査会(2004-04-13). 情報交換用日本語図形文字セット、第 1 面(PDF) . ITSCJ/ IPSJ . ISO-IR -233.
- ^ アン・ファン・ケステレン。 「指標jis0208の見える化」。エンコーディング標準。なんてことだ。
- ^ abcd 「Shift-JIS から Unicode への変換におけるあいまいさ (非規範的)」。XML 日本語プロファイル。W3C。
- ^ 「Converter Explorer: ibm-943_P15A-2003: 開始バイト 0x81」。ICU デモ。Unicode の国際コンポーネント。
- ^ 「Converter Explorer: ibm-943_P130-1999: 開始バイト 0x81」。ICU デモ。Unicode の国際コンポーネント。
- ^ ab "CP932.TXT". Unicodeコンソーシアム。
- ^ ab 「リードバイト NULL — コード ページ 932」。Microsoft。
- ^ van Kesteren, Anne . 「12.3.1. Shift_JIS デコーダー」.エンコーディング標準. WHATWG.
byte が ASCII バイトまたは 0x80 の場合、値が byte であるコード ポイントを返します。
- ^ ab Kaplan, Michael S. (2005-09-17). 「バックスラッシュがバックスラッシュでないのはいつですか?」。すべてを整理する。
- ^ ab "CP00897.txt". IBM.
- ^ 「コード ページ識別子 - CP 00897」。IBM Globalization。IBM。2016年 3 月 17 日時点のオリジナルよりアーカイブ。
外部リンク
マイクロソフト関連
- Microsoft の Windows コード ページ 932 リファレンス
- MS932 のコード ページ ファイル
- Microsoft のコード ページ 932 から Unicode へのマッピング
- ICU コード ページ 943C (ibm-943_P15A-2003 エイリアス windows-31j) のデモ
IBM関連
- IBM のコード ページ 943 のドキュメント
- ICU コード ページ 943 (ibm-943_P130-1999) のデモ
- ibm-943_P130-1999 から Unicode への ICU マッピング
