Windows コード ページは、 1980 年代から 1990 年代にかけてMicrosoft Windowsで使用されていた文字のセットまたはコード ページ(他のオペレーティング システムでは文字エンコーディングとして知られています) です。Windows コード ページは、Windows に Unicode が実装されたときに徐々に置き換えられましたが[引用が必要]、Windows と他のプラットフォームの両方で現在もサポートされており、Alt コードショートカットが使用されるときにも適用されます。
現在のWindowsバージョンはUnicodeをサポートしていますが、新しいWindowsアプリケーションでは8ビット文字エンコーディングではなくUnicode (UTF-8)を使用する必要があります。[1]
Windows システムには、OEM コード ページと Windows ネイティブ ("ANSI") コード ページの 2 つのグループがあります (ANSI は、米国規格協会の略称です)。これらのグループのコード ページは両方とも、拡張 ASCIIコード ページです。追加のコード ページは、標準の Windows 変換ルーチンによってサポートされていますが、どちらのタイプのシステム コード ページとしても使用されません。
ANSI コード ページ
| エイリアス | ANSI (誤った名称) |
|---|---|
| 標準 | WHATWG エンコーディング標準 |
| 拡張 | アスキー |
| 先行 | 8859 規格 |
| 後継者 | Unicode UTF-16 (Win32 API 内) UTF-8 (ファイル用) |
ANSI コード ページ( Microsoft が前者の用語が誤った名称であることを認めたため[3] 、正式には「Windows コード ページ」 [2]と呼ばれています) は、Windows システムでグラフィカル ユーザー インターフェイスを使用するネイティブの非 Unicode (つまり、バイト指向) アプリケーションに使用されます。これらの Windows コード ページはANSI (米国規格協会)標準に準拠していないため、「ANSI」という用語は誤った名称です。コード ページ 1252 は、国際標準ISO 8859-1 [3]となった初期の ANSI 草案に基づいており、さらに 32 個の制御コードと 96 個の印刷可能文字用のスペースが追加されています。その他の違いの中でも、Windows コード ページは印刷可能文字を補助的な制御コード スペースに割り当てるため、標準に準拠したオペレーティング システムでは判読できない程度です。
従来の「ANSI」コード ページのほとんどは、コード ページ番号が125xというパターンになっています。ただし、874 (タイ語) と東アジアのマルチバイト「ANSI」コード ページ ( 932、936、949、950 ) は、すべて OEM コード ページとしても使用され、IBM エンコードと一致するように番号が付けられています。Windows エンコードはいずれも同じではありません (ほとんどは似ていますが)。コード ページ 1258も OEM コード ページとして使用されていますが、これは既存のエンコードの拡張ではなく、Microsoft 独自のものです。IBM は Microsoft のバリアントに独自の異なる番号を割り当てており、これらは該当する場合は以下のリストで参照用に提供されています。
125x Windowsコードページはすべて、874と936と同様に、Internet Assigned Numbers Authority (IANA)によって「Windows-番号」としてラベル付けされていますが、「Windows-936」は「 GBK 」の同義語として扱われています。Windowsコードページ932は、代わりに「Windows-31J」としてラベル付けされています。[4]
ANSI Windowsコードページ、特にコードページ1252は、ANSIに提出された、またはANSI向けに意図された草案に基づいているため、このように呼ばれています。しかし、ANSIとISOはこれらのコードページを標準化していません。代わりに、次のいずれかになります。[3]
- ISO 8859やさまざまな国家標準(Windows-1252とISO-8859-1など)などの標準セットのスーパーセット。
- これらに対する大幅な変更( Windows-1250とISO-8859-2のように、さまざまな程度で互換性がなくなる)
- 並列エンコーディングはありません ( Windows-1257とISO-8859-4のように。ISO -8859-13 はずっと後に導入されました)。また、Windows-1251 は、 ISO 標準化されたISO-8859-5にも、当時普及していたKOI-8にも従っていません。
Microsoft は、CP1252 の約 12 個のタイポグラフィおよびビジネス文字 (特にユーロ記号€ を含む) を、ISO 8859 ではC1 制御コードに割り当てられているコード ポイント0x80~0x9F に割り当てました。これらの割り当ては、他の多くの ANSI/Windows コード ページの同じコード ポイントにも存在します。Windows は C1 制御コードを使用しなかったため、この決定は Windows ユーザーに直接影響しませんでした。ただし、Unix や MacOS などの標準準拠のプラットフォームに転送されたファイルに含まれている場合、情報は見えず、混乱を招く可能性があります。[引用が必要]
OEM コード ページ
OEMコード ページ( Original Equipment Manufacturer ) は、 Win32 コンソールアプリケーションおよび仮想 DOSで使用され、DOSおよびオリジナルのIBM PCアーキテクチャからの名残であると考えられます。別のコード ページ スイートが実装されたのは、互換性のためだけでなく、VGA (および後継) ハードウェアのフォントが、コード ページ 437と互換性のある線描画文字のエンコードを推奨しているためです。ほとんどの OEM コード ページは、特に非文字については、CP437 の後半 (非 ASCII) と多くのコード ポイントを共有しています。
典型的な OEM コード ページの後半は、ANSI/Windows コード ページと大まかにさえ似ていません。ただし、2 つのシングルバイト固定幅コード ページ (タイ語の場合は 874 、ベトナム語の場合は 1258 )と4 つのマルチバイトCJKコード ページ ( 932、936、949、950 ) が、OEM コード ページと ANSI コード ページの両方で使用されます。ベトナム語では 128 を超える文字と発音区別符号の組み合わせが必要なため、コード ページ 1258 では結合発音区別符号が使用されます。これは、一部のC0 (つまり ASCII) 制御コードを置き換えるVISCIIとは対照的です。
歴史
初期のコンピュータ システムでは、記憶域が限られており、文字をエンコードするために使用できるビット数が制限されていました。それ以前の独自のエンコードではビット数が少なくなっていましたが、米国標準情報交換コード(ASCII) では 7 ビットに落ち着きました。これは、米国で使用される 96 文字のサブセットをエンコードするのに十分でした。8 ビットバイトが主流になるにつれて、Microsoft (および他の企業) は、ボックス描画記号などのさまざまな用途に対応するために、レパートリーを 224 に拡張しました。西ヨーロッパと南アメリカの市場向けにあらかじめ作成された文字を提供する必要があったため、異なる文字セットが必要になりました。Microsoft は、アルファベットごとに 1 つのコード ページという原則を確立しました。アフリカ、南北アメリカ、南アジア、東南アジア、中東、ヨーロッパのほとんどの地域で使用されている分節スクリプトでは、文字に必要なバイトは 1 つだけですが、世界のその他の地域で使用される表意文字セットでは 2 バイト以上が必要です。コード ページ モデルでは、この課題に対処できませんでした。
1990 年代後半以降、ソフトウェアやシステムは、優先文字エンコード形式としてUnicode を採用してきました。Unicode は、何百万もの文字を処理できるように設計されています。現在のすべての Microsoft 製品とアプリケーション プログラム インターフェイスは、内部的に Unicode を使用していますが[引用が必要] 、一部のアプリケーションでは、ファイルや標準出力にテキスト データを読み書きするときに、コンピューターの「ロケール」の既定のエンコード[明確化が必要]を引き続き使用しています[引用が必要] 。そのため、世界のある地域では判読可能で理解できるファイルでも、別の地域では理解できない文字化けになる場合があります。
UTF-8、UTF-16
Microsoftは、Windows NT以降のすべてのオペレーティングシステムでUnicodeエンコーディング(最初は現在では廃止されているUCS-2で、これは当時Unicodeの唯一のエンコーディングでした)、つまりUTF-16を採用しましたが、 Windows 10バージョン1803以降ではUTF-8(別名)もサポートしています。[5] UTF-16は、16ビットを使用して基本多言語面(BMP)
のすべてのUnicode文字を一意にエンコードしますが、残りのUnicode(絵文字など)は32ビット(4バイト)コードでエンコードされます。一方、業界の他の部分(Unix系システムやWeb)、そして現在MicrosoftはUTF-8を選択しています(7ビットASCII文字セットに1バイト、BMPのその他の文字に2〜3バイト、残りに4バイトを使用します)。
CP_UTF8
リスト
次の Windows コード ページが存在します。
Windows-125x シリーズ
これら 9 つのコード ページはすべて拡張 ASCII 8 ビットSBCSエンコーディングであり、Windows で ANSI コード ページとして使用するためにMicrosoftによって設計されました。これらは一般に IANA 登録名[6]windows-<number>で として知られていますが、 またはcp<number>「コード ページ」の略である「cp」と呼ばれることもあります。これらはすべて ANSI コード ページとして使用されます。Windows-1258 は OEM コード ページとしても使用されます。
Windows-125x シリーズには 9 つの ANSI コード ページが含まれており、主にヨーロッパと西アジアの文字をカバーし、さらにベトナム語もカバーしています。タイ語と東アジア言語のシステム エンコードは、同様の IBM コード ページと一致するように番号が付けられており、ANSI と OEM の両方のコード ページとして使用されています。これらについては、次のセクションで説明します。
DOS コードページ
これらも ASCII ベースです。これらのほとんどは OEM コード ページとして使用するために含まれています。コード ページ 874 は ANSI コード ページとしても使用されます。
- 437 – IBM PC US、8ビットSBCS 拡張ASCII。[25] OEM-USとしても知られ、VGAグラフィックカードの主要な組み込みフォントのエンコーディング。
- 708 – アラビア語、拡張ISO 8859-6 (ASMO 708)
- 720 – アラビア語、枠線付きの文字を通常の位置に保持
- 737 – 「MS-DOS ギリシャ語」。すべてのボックス描画文字を保持します。869 よりも人気があります。
- 775 – 「MS-DOS バルティック リム」
- 850 – 「MS-DOS Latin 1」。ISO 8859-1 の完全な(再編成された)レパートリー。
- 852 – 「MS-DOS ラテン 2」
- 855 – 「MS-DOS キリル文字」。主に南スラブ語に使用されます。ISO -8859-5の (再編成された) レパートリーが含まれます。cp866 と混同しないでください。
- 857 – 「MS-DOS トルコ語」
- 858 – ユーロ記号付きの西ヨーロッパ
- 860 – 「MS-DOS ポルトガル語」
- 861 – 「MS-DOS アイスランド語」
- 862 – 「MS-DOS ヘブライ語」
- 863 – 「MS-DOS フランス語カナダ」
- 864 – アラビア語
- 865 – 「MS-DOS ノルディック」
- 866 – 「MS-DOS キリル文字ロシア語」、cp866。WHATWG エンコーディング標準 for HTML5 のレガシー エンコーディングとして含まれる、純粋な OEM コード ページ (ANSI またはその両方ではない) のみです。
- 869 – 「MS-DOS ギリシャ語 2」、IBM869。ISO 8859-7の完全な (再編成された) レパートリー。
- 874 –タイ語(ANSI コード ページとしても使用される) は、 Windows-1252 からいくつかの文字を追加してISO 8859-11 (およびTIS-620 ) を拡張します。IBM コード ページ 1162 に対応します (IBM-874 は類似していますが、拡張機能が異なります)。
東アジアのマルチバイトコードページ
これらは、同じ番号の IBM コード ページとは異なる場合があります。コード ページ 932、949、および 950 は、同じ番号の IBM コード ページと部分的にしか一致しません。一方、番号 936 は、現在では非推奨となっている別の簡体字中国語エンコードに IBM によって使用されていました。また、Windows-951 は、その場しのぎの策として、IBM-951 とは無関係です。IBM の同等のコード ページは、2 番目の列に示されています。コード ページ 932、936、949、および 950/951 は、問題のロケールで ANSI および OEM コード ページの両方として使用されます。

さらにいくつかのマルチバイト コード ページが、オペレーティング システム ライブラリを使用したデコードまたはエンコード用にサポートされていますが、どのロケールでもどちらの種類のシステム エンコードとしても使用されません。
EBCDIC コード ページ
Unicode関連のコードページ
Macintosh 互換コードページ
ISO 8859 コードページ
ITU-T コードページ
KOI8 コードページ
コードページの使用から生じる問題
Microsoft は最新のアプリケーションでは Unicode を使用することを強く推奨していますが、多くのアプリケーションやデータ ファイルは依然として従来のコード ページに依存しています。
- プログラムは、(Unicode 以前の) ファイルの内容を正しく表示するために、使用するコード ページを認識する必要があります。プログラムが間違ったコード ページを使用すると、テキストがmojibakeとして表示される場合があります。
- 使用されているコード ページはマシンによって異なる場合があり、そのため、あるマシンで作成された (Unicode 以前の) ファイルは別のマシンでは読み取れない可能性があります。
- 多くの場合、データはコード ページで不適切にタグ付けされていたり、まったくタグ付けされていなかったりするため、データを読み取るための正しいコード ページを判別することが困難になります。
- これらの Microsoft コード ページは、一部の標準や他のベンダーの実装とはさまざまな程度で異なります。これはすべてのベンダーに発生する問題であり、Microsoft自体の問題ではありませんが、一貫性が欠如しているため、他のシステムとの相互運用性が信頼できない場合があります。
- コード ページを使用すると、使用できる文字のセットが制限されます。
- サポートされていないコード ページで表現された文字は、疑問符 (?) やその他の置換文字に変換されるか、より単純なバージョン (文字からアクセントを削除するなど) に変換されることがあります。いずれの場合も、元の文字が失われる可能性があります。
参照
- AppLocale – ユーザーが選択したロケールで非 Unicode (コード ページ ベース) アプリケーションを実行するユーティリティ。
参考文献
- ^ 「Unicode と文字セット」。Microsoft。2023 年 6 月 13 日。2024 年 5 月 27 日閲覧。
- ^ “コードページ”. 2016-03-07. 2016-03-07時点のオリジナルよりアーカイブ。2021-05-26閲覧。
- ^ abc 「このサイトで使用される用語集」。2018年12月8日。2018年12月8日にオリジナルからアーカイブ。Windows
コード ページを表すために使用される「ANSI」という用語は歴史的な参照ですが、現在では Windows コミュニティで依然として使用されている誤った名称です。この原因は、Windows コード ページ 1252 が元々 ANSI ドラフト (国際標準化機構 (ISO) 標準 8859-1 になった) に基づいていたという事実にあります。「ANSI アプリケーション」は通常、非 Unicode またはコード ページ ベースのアプリケーションを指します。
- ^ 「文字セット」www.iana.org。 2021年5月25日時点のオリジナルよりアーカイブ。2021年5月26日閲覧。
- ^ ハイロム (2017-11-14). 「Windows 10のInsider PreviewでシステムロケールをUTF-8にするオプションが追加される」 [Windows 10 Insider Previewで追加されたシステムロケールをUTF-8にするオプション].スラド。 2018-05-11 のオリジナルからアーカイブ。2018年5月10日に取得。
- ^ 「文字セット」。IANA。2016年12月3日時点のオリジナルよりアーカイブ。2019年4月7日閲覧。
- ^ Microsoft. 「Windows 1250」。2014年7月14日時点のオリジナルよりアーカイブ。2014年7月6日閲覧。
- ^ IBM. 「SBCS コード ページ情報文書 CPGID 01250」。2014 年 7 月 14 日時点のオリジナルよりアーカイブ。2014年 7 月 6 日閲覧。
- ^ Microsoft. 「Windows 1251」。2014年7月14日時点のオリジナルよりアーカイブ。2014年7月6日閲覧。
- ^ IBM. 「SBCS コード ページ情報文書 CPGID 01251」。2014 年 7 月 14 日時点のオリジナルよりアーカイブ。2014年 7 月 6 日閲覧。
- ^ Microsoft. 「Windows 1252」。2013年5月4日時点のオリジナルよりアーカイブ。2014年7月6日閲覧。
- ^ IBM. 「SBCS コード ページ情報文書 CPGID 01252」。2014 年 7 月 14 日時点のオリジナルよりアーカイブ。2014年 7 月 6 日閲覧。
- ^ Microsoft. 「Windows 1253」。2014年7月14日時点のオリジナルよりアーカイブ。2014年7月6日閲覧。
- ^ IBM. 「SBCS コード ページ情報文書 CPGID 01253」。2014 年 7 月 14 日時点のオリジナルよりアーカイブ。2014年 7 月 6 日閲覧。
- ^ Microsoft. 「Windows 1254」。2014年7月14日時点のオリジナルよりアーカイブ。2014年7月6日閲覧。
- ^ IBM. 「SBCS コード ページ情報文書 CPGID 01254」。2014 年 7 月 14 日時点のオリジナルよりアーカイブ。2014年 7 月 6 日閲覧。
- ^ Microsoft. 「Windows 1255」。2014年7月14日時点のオリジナルよりアーカイブ。2014年7月6日閲覧。
- ^ IBM. 「SBCS コード ページ情報文書 CPGID 01255」。2014 年 7 月 14 日時点のオリジナルよりアーカイブ。2014年 7 月 6 日閲覧。
- ^ Microsoft. 「Windows 1256」。2014年7月14日時点のオリジナルよりアーカイブ。2014年7月6日閲覧。
- ^ IBM. 「SBCS コード ページ情報文書 CPGID 01256」。2014 年 7 月 14 日時点のオリジナルよりアーカイブ。2014年 7 月 6 日閲覧。
- ^ Microsoft. 「Windows 1257」。2013年3月16日時点のオリジナルよりアーカイブ。2014年7月6日閲覧。
- ^ IBM. 「SBCS コード ページ情報文書 CPGID 01257」。2014 年 7 月 14 日時点のオリジナルよりアーカイブ。2014年 7 月 6 日閲覧。
- ^ Microsoft. 「Windows 1258」。2013年10月25日時点のオリジナルよりアーカイブ。2014年7月6日閲覧。
- ^ IBM. 「SBCS コード ページ情報文書 CPGID 01258」。2014 年 7 月 14 日時点のオリジナルよりアーカイブ。2014年 7 月 6 日閲覧。
- ^ IBM. 「SBCS コード ページ情報文書 - CPGID 00437」。2016 年 6 月 9 日時点のオリジナルよりアーカイブ。2014年 7 月 4 日閲覧。
- ^ 「IBM-943 および IBM-932」。IBM Knowledge Center。IBM。2018年 8 月 18 日時点のオリジナルよりアーカイブ。2020年 7 月 8 日閲覧。
- ^ 「Converter Explorer: ibm-1373_P100-2002」。ICUデモンストレーション。International Components for Unicode。2021年5月26日時点のオリジナルよりアーカイブ。 2020年6月27日閲覧。
- ^ 「コード化文字セット識別子 - CCSID 5471」。IBM Globalization。IBM 。2014年11月29日時点のオリジナルよりアーカイブ。
- ^ Julliard, Alexandre (2021年3月11日). 「dump_krwansung_codepage: KSX1001ファイルから韓国語のWansungテーブルを作成」。make_unicode : ftp.unicode.orgの説明からコードページ.cファイルを生成。Wineプロジェクト。2021年5月26日時点のオリジナルよりアーカイブ。 2021年3月14日閲覧。
- ^ IBM. 「SBCS コード ページ情報文書 - CPGID 00037」。2014 年 7 月 14 日時点のオリジナルよりアーカイブ。2014 年 7 月 4 日閲覧。
- ^ Steele, Shawn (2005-09-12). 「コード ページ 21027 "Extended/Ext Alpha Lowercase"」. MSDN . 2019-04-06 にオリジナルからアーカイブ。 2019-04-06に取得。
- ^ abcde 「コード ページ識別子」。docs.microsoft.com。2019年4 月 7 日時点のオリジナルよりアーカイブ。2019 年 4 月 7 日取得。
- ^ abc Mozilla Foundation . 「Windows コード ページとの関係」. Crate encoding_rs . Docs.rs.
- ^ abcde 「コード ページ識別子」。Microsoft Developer Network。Microsoft。2014年。2016 年 6 月 19 日時点のオリジナルよりアーカイブ。2016年 6 月 19日に取得。
- ^ abcde 「Web エンコーディング - Internet Explorer - エンコーディング」。WHATWG Wiki。2012年 10 月 23 日。2016 年 6 月 20 日時点のオリジナルよりアーカイブ。2016年 6 月 20 日閲覧。
- ^ Foller, Antonin (2014) [2011]. 「Western European (IA5) encoding - Windows charsets」. WUtils.com - オンライン Web ユーティリティとヘルプ. Motobit Software. 2016-06-20 にオリジナルからアーカイブ。2016-06-20に取得。
- ^ Foller, Antonin (2014) [2011]. 「ドイツ語 (IA5) エンコード - Windows 文字セット」. WUtils.com - オンライン Web ユーティリティとヘルプ. Motobit Software. 2016 年 6 月 20 日時点のオリジナルよりアーカイブ。2016年 6 月 20 日閲覧。
- ^ Foller, Antonin (2014) [2011]. 「スウェーデン語 (IA5) エンコード - Windows 文字セット」. WUtils.com - オンライン Web ユーティリティとヘルプ. Motobit Software. 2016 年 6 月 20 日のオリジナルからアーカイブ。2016年 6 月 20 日取得。
- ^ Foller, Antonin (2014) [2011]. 「ノルウェー語 (IA5) エンコーディング - Windows 文字セット」. WUtils.com - オンライン Web ユーティリティとヘルプ. Motobit Software. 2016-06-20 にオリジナルからアーカイブ。2016-06-20に取得。
- ^ Foller, Antonin (2014) [2011]. 「US-ASCII エンコーディング - Windows 文字セット」. WUtils.com - オンライン Web ユーティリティとヘルプ. Motobit Software. 2016 年 6 月 20 日のオリジナルからアーカイブ。2016年 6 月 20 日取得。
- ^ Nechayev, Valentin (2013) [2001]. 「8ビットキリル文字エンコーディングの世界のレビュー」。2016年12月5日時点のオリジナルよりアーカイブ。2016年12月5日閲覧。
外部リンク
- 各国語サポート (NLS) API リファレンス。言語ごとの ANSI および OEM コードページを示す表 (Microsoft が元のページを削除したため、Web アーカイブから)
- IANA 文字セット名登録
- Windows コード ページの Unicode マッピング テーブル
- 「最適な」Windows コード ページの Unicode マッピング
