ANSI エンコーディング形式とは何ですか? システムのデフォルト形式ですか?ASCII との違いは何ですか?
10 に答える
ANSIエンコーディングは、システム(通常はWindows)の標準コードページを指すために使用される少し一般的な用語です。これは、Western/USシステムではWindows-1252とより適切に呼ばれます。(他のシステム上の特定の他のWindowsコードページを表すことができます。)これは、追加の128文字コードを含むすべてのASCII文字を含むという点で、本質的にASCII文字セットの拡張です。この違いは、「ANSI」エンコーディングがASCIIのように7ビットではなく8ビットであるという事実によるものです(ASCIIは現在ほとんどの場合、MSBが0に設定された8ビットバイトとしてエンコードされています)。このエンコーディングが通常ANSIと呼ばれる理由の説明については、記事を参照してください。
「ANSI」という名前は、実際のANSI規格に対応していないため、誤った名称ですが、名前が固定されています。ANSIはUTF-8と同じではありません。
厳密に言えば、ANSI エンコーディングなどというものはありません。口語的に ANSI という用語は、いくつかの異なるエンコーディングに使用されます。
- ISO 8859-1
- Windows CP1252
- Windows マシンの現在のシステム エンコーディング (Win32 API 用語)。
むかしむかし Microsoft は、他のすべての企業と同様に 7 ビットの文字セットを使用し、ASCII をコア サブセットとして保持していましたが、適切なときに独自の文字セットを発明しました。その後、世界が 8 ビット エンコーディングに移行し、ISO-8859 ファミリなどの国際標準が存在することに気付きました。当時、国際規格を手に入れたいと思っていて、米国に住んでいた場合は、独自のブランドと番号で国際規格を再発行した米国規格協会 (ANSI) から購入しました (これは、米国政府が望んでいるためです)。国際規格ではなく、米国規格に準拠しています)。そのため、Microsoft の ISO-8859 のコピーでは、表紙に「ANSI」と記載されていました。当時、Microsoft は標準にあまり慣れていなかったので、ANSI が他にも多くの標準を公開していることを認識していません。そこで、彼らは ISO-8859 ファミリの標準 (および、当時は標準をよく理解していなかったので、彼らが発明した変種) を表紙の名前「ANSI」で参照し、それが Microsoft に伝わりました。ユーザー ドキュメント、したがってユーザー コミュニティに参加します。30年ほど前のことですが、今でも時々その名前を耳にします。
ASCIIは、128個のシンボルを持つ7ビットのコードページを定義するだけです。ANSIはこれを8ビットに拡張し、シンボル128〜255にはいくつかの異なるコードページがあります。
このコードページを定義するのは実際にはISO/IEC 8859規格であるため、ANSIの命名は正しくありません。参考のためにISO/IEC8859を参照してください。ISO /IEC8859-1からISO/IEC8859-16までの16のコードページがあります。
Windows-1252もISO/IEC 8859-1に基づいており、主に128〜159の範囲に設定されたC1コントロールの範囲にいくつかの変更が加えられています。ウィキペディアによると、Windows-1252はISO-8859-1とも呼ばれます。 ISOと8859の間のハイフン。(信じられない!誰がそのようなことをしますか?!?)
お使いの PC が「欧米」の PC ではなく、どのコード ページが使用されているかわからない場合は、次のページを参照してください: National Language Support (NLS) API Reference
[Microsoft はこのリファレンスを削除しました。Web アーカイブのNational Language Support (NLS) API リファレンスから取得してください。
または、レジストリを照会できます。
C:\>reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /f ACP
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
ACP REG_SZ 1252
End of search: 1 match(es) found.
C:\>
シングルバイト文字を使用する場合、ASCII形式で最初の127文字が定義されます。128〜255の拡張文字は、他の言語のサポートを制限できるように、さまざまなANSIコードページで定義されています。ANSIでエンコードされた文字列を理解するには、使用するコードページを知る必要があります。
ANSI (別名Windows-1252 / WinLatin1)は、ラテンアルファベットの文字エンコードであり、 ISO-8859-1にかなり似ています。ウィキペディアでそれを見てみたいと思うかもしれません。