回答:
ANSIエンコーディングは、システム(通常はWindows)の標準コードページを指すために使用される少し一般的な用語です。これは、より適切には、Western / USシステムではWindows-1252と呼ばれます。(他のシステム上の他の特定のWindowsコードページを表すことができます。)これは、追加の128文字コードを持つすべてのASCII文字を含むという点で、本質的にASCII文字セットの拡張です。この違いは、「ANSI」エンコーディングがASCIIのように7ビットではなく8ビットであるという事実によるものです(ASCIIは現在ほとんど常に、MSBが0に設定された8ビットバイトとしてエンコードされています)。このエンコーディングが通常ANSIと呼ばれる理由の説明については、記事を参照してください。
「ANSI」という名前は、実際のANSI標準に対応していないため、誤った名称ですが、名前は固まっています。ANSIはUTF-8と同じではありません。
windows-1254
。
技術的には、ANSIはUS-ASCIIと同じである必要があります。これはANSI X3.4標準を参照します。これは、単にANSI組織が承認したASCIIのバージョンです。トップビットセット文字は7ビット文字セットであるため、ASCII / ANSIでは定義されていません。
しかし、DOSおよびその後のWindowsコミュニティによるこの用語の誤用の数年は、「使用されているマシンのシステムコードページ」としての実用的な意味を残しています。システムコードページは、「mbcs」とも呼ばれます。これは、東アジアのシステムでは、文字ごとに複数バイトのエンコーディングになる可能性があるためです。一部のコードページでは、マルチバイトシーケンスの最後のバイトとしてトップビットクリアバイトを使用することもできるため、プレーンASCIIとの完全な互換性はありませんが、それでも「ANSI」と呼ばれます。
米国および西ヨーロッパのデフォルト設定では、「ANSI」はWindowsコードページ1252にマップされます。これはISO-8859-1と同じではありません(ただし、非常に似ています)。他のマシンでは、それは他の何でもかもしれません。これにより、「ANSI」は外部エンコーディング識別子としてまったく役に立たなくなります。
厳密に言うと、ANSIエンコーディングなどはありません。口語的にANSIという用語は、いくつかの異なるエンコーディングに使用されます。
昔々、Microsoftは他の人と同じように7ビット文字セットを使用しており、ASCIIをコアサブセットとして保持していましたが、適切なときに独自に開発しました。その後、世界は8ビットエンコーディングに移行し、ISO-8859ファミリなどの国際標準が存在することに気付きました。当時、国際標準を取得したいが米国に住んでいた場合は、独自のブランドと番号で国際標準を再発行したANSI(American National Standards Institute)から購入しました(これは、米国政府が国際規格ではなく、米国規格への準拠)。したがって、MicrosoftのISO-8859のコピーは表紙に「ANSI」とありました。マイクロソフトは当時の標準にあまり慣れていなかったため、ANSIが他の多くの規格も公開していることを理解する。そのため、彼らはISO-8859ファミリーの標準(および当時は標準を実際には理解していなかったために彼らが発明したバリアント)を表紙の名前「ANSI」で参照し、それがMicrosoftに浸透しました。ユーザードキュメント、したがってユーザーコミュニティに。それは約30年前のことですが、今日でも名前を聞くことがあります。
ASCIIは、128シンボルの7ビットコードページを定義するだけです。ANSIはこれを8ビットに拡張し、128〜255のシンボルにはいくつかの異なるコードページがあります。
ANSIの命名は、実際にはこのコードページを定義するISO / IEC 8859規格であるため、正しくありません。見るISO / IEC 8859を参照のため。ISO / IEC 8859-1からISO / IEC 8859-16までの16のコードページがあります。
Windows-1252もISO / IEC 8859-1に基づいており、主にC1コントロールセットの範囲が128〜159に変更されています。ウィキペディアでは、Windows-1252はISO-8859-1とも呼ばれ、 ISOと8859の間のハイフン。
基本的に「ANSI」は、Windowsのレガシーコードページを指します。このトピックに関するレイモンドチェンの記事もご覧ください。
この原因は、Windowsコードページ1252が元々ANSIドラフトに基づいていたため、ISO規格8859-1になりました。
最初の127文字はほとんどのコードページでASCIIと同じですが、上位の文字は異なります。
ただし、ANSIはCP1252またはLatin 1を自動的に意味するわけではありません。
とはいえ、最近のそのような問題は単に避け、Unicodeを使用する必要があります。
お使いのPCが「Western」PCではなく、どのコードページが使用されているかわからない場合は、このページをご覧ください。NationalLanguage Support(NLS)APIリファレンス
[Microsoftはこの参照を削除し、web-archive 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"テキストが、ANSI.SYSドライバーを介してDOSで使用できる疑似VT-100エスケープコードを参照し、ストリーミングテキストのフローを変更したときのことを覚えています。 //en.wikipedia.org/wiki/ANSI_escape_code