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
5 回答
ANSI 是当前的 Windows ANSI 代码页,相当于 Encoding.Default。
OEM 是控制台应用程序通常使用的当前 OEM 代码页。
你可以使用:
Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.OEMCodePage)
在控制台应用程序中,OEM 编码也可以使用
Console.OutputEncoding
这真的,真的很古老。ODBC 可以追溯到石器时代,早在 Windows 开始取代 MS-DOS 时。那时,大量文本仍以最初的 IBM-PC 字符集编码,被微软命名为“OEM 字符集”。标准的 IBM-PC 集在上半部分有一些重音字符和伪图形字形,代码 0x80-0xff。
对于非英语语言的文本输出过于有限,微软开始使用代码页,适用于特定语言组的字符字形范围。美国英语字符集由 ANSI 标准化,该标签现在(错误地)附加到任何非 OEM 代码页。
再也没有人在 OEM 字符集中对文本进行编码,至少 10 年前它就像渡渡鸟一样。此处的正确设置是 ANSI。并且让您的手指在背后交叉,用于对文本进行编码的代码页与您系统的默认代码页相匹配。这也是渡渡鸟,Unicode 解决了它。
对您的问题的简短回答,没有直接关系。
更长的版本:
CharacterSet
“Schema.ini”文件可以是ANSI
或OEM
.
ANSI 和 ASCII 指的是不同的东西。
您可以在此处阅读更多内容:Alex Hoffman 的
Understanding ASCII and ANSI Characters ASCII vs ANSI Encoding
据我了解, CharacterSet=ANSI 相当于Encoding.Default。那么OEM可能是ASCIIEncoding。
但是,ANSI 使用系统 ANSI 代码页,因此如果从具有不同代码页的计算机访问同一文件,则可能会出现不兼容性。
为了在两者之间切换,我编写了自己的参考资料:
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