役に立ちましたか?

解決

ANSIは現在のWindows ANSIコードページで、Encoding.Defaultと同等です。

OEMは、コンソールアプリケーションで通常使用される現在のOEMコードページです。

これを使用して取得できます:

Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage)

コンソールアプリケーションでは、OEMエンコーディングも使用できます

Console.OutputEncoding

他のヒント

これは本当に古いです。 ODBCは、WindowsがMS-DOSからの引き継ぎを開始した石器時代からさかのぼります。当時、多くのテキストは「OEM Character Set」という名前の元のIBM-PC文字セットでエンコードされていました。マイクロソフトによる。標準のIBM-PCセットには、上半分にいくつかのアクセント付き文字と擬似グラフィックグリフがあり、コードは0x80-0xffです。

英語以外の言語でのテキスト出力が制限されすぎているため、Microsoftは特定の言語グループに適した文字グリフの範囲であるコードページの使用を開始しました。アメリカ英語の文字セットはANSIによって標準化されており、そのラベルは現在、OEM以外のコードページに(誤って)添付されています。

OEM文字セットでテキストをエンコードする人はもういません。少なくとも10年前はドードーのように動作していました。ここでの適切な設定はANSIです。また、テキストをエンコードするために使用されるコードページがシステムのデフォルトコードページと一致するように、指を背中の後ろに渡したままにします。それもドードーで、Unicodeが解決しました。

質問への短い答え、直接的な関係はありません。

長いバージョン:
" Schema.ini"の CharacterSet ファイルは ANSI または OEM のいずれかです。
ANSIとASCIIは異なるものを指します。

ここで詳細を読むことができます:
ASCIIおよびANSI文字について
アレックスホフマンによるASCII対ANSIエンコーディング

私の理解では、CharacterSet = ANSIは Encoding.Default 。 OEMはASCIIEncodingである可能性があります。

ただし、ANSIはシステムANSIコードページを使用するため、異なるコードページを持つコンピューターから同じファイルにアクセスすると、非互換性が生じる可能性があります。

この2つを切り替えるために、独自の参照をコンパイルしました:

Windows code page       Name            System.Text.Encoding    schema.ini CharacterSet
20127                   ASCII (US)      ASCII                   20127
1252                    ANSI Latin I    Default                 ANSI
65001                   UTF-8           UTF8                    65001
1200                    UTF-16 LE       Unicode                 Unicode
1201                    UTF-16 BE       BigEndianUnicode        1201
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top