.NETエンコーディングと文字セットの関係
-
06-07-2019 - |
質問
CharacterSetの関係は次のとおりです:
http://msdn.microsoft.com/en-us /library/ms709353(VS.85).aspx
ここにASCIIエンコード:
http://msdn.microsoft .com / en-us / library / system.text.asciiencoding.getbytes(VS.71).aspx
解決
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