4

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

4

5 回答 5

11

ANSI 是当前的 Windows ANSI 代码页,相当于 Encoding.Default。

OEM 是控制台应用程序通常使用的当前 OEM 代码页。

你可以使用:

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

在控制台应用程序中,OEM 编码也可以使用

Console.OutputEncoding
于 2009-11-28T12:17:55.647 回答
2

这真的,真的很古老。ODBC 可以追溯到石器时代,早在 Windows 开始取代 MS-DOS 时。那时,大量文本仍以最初的 IBM-PC 字符集编码,被微软命名为“OEM 字符集”。标准的 IBM-PC 集在上半部分有一些重音字符和伪图形字形,代码 0x80-0xff。

对于非英语语言的文本输出过于有限,微软开始使用代码页,适用于特定语言组的字符字形范围。美国英语字符集由 ANSI 标准化,该标签现在(错误地)附加到任何非 OEM 代码页。

再也没有人在 OEM 字符集中对文本进行编码,至少 10 年前它就像渡渡鸟一样。此处的正确设置是 ANSI。并且让您的手指在背后交叉,用于对文本进行编码的代码页与您系统的默认代码页相匹配。这也是渡渡鸟,Unicode 解决了它。

于 2009-11-28T15:55:15.267 回答
1

对您的问题的简短回答,没有直接关系。

更长的版本:
CharacterSet“Schema.ini”文件可以是ANSIOEM.
ANSI 和 ASCII 指的是不同的东西。

您可以在此处阅读更多内容:Alex Hoffman 的
Understanding ASCII and ANSI Characters ASCII vs ANSI Encoding

于 2009-11-28T09:49:58.417 回答
1

据我了解, CharacterSet=ANSI 相当于Encoding.Default。那么OEM可能是ASCIIEncoding。

但是,ANSI 使用系统 ANSI 代码页,因此如果从具有不同代码页的计算机访问同一文件,则可能会出现不兼容性。

于 2009-11-28T10:07:36.757 回答
0

为了在两者之间切换,我编写了自己的参考资料:

Windows 代码页名称 System.Text.Encoding schema.ini CharacterSet
20127 ASCII(美国) ASCII 20127
1252 ANSI 拉丁语 I 默认 ANSI
65001 UTF-8 UTF8 65001
1200 UTF-16 LE Unicode Unicode
1201 UTF-16 BE BigEndianUnicode 1201
于 2010-11-12T18:47:02.797 回答