【发布时间】:2017-04-09 07:06:36
【问题描述】:
我正在尝试为旧系统创建平面文件,他们要求数据以 MS DOS .txt 文件(文本文档 - MS-DOS 格式 CP_OEM)的 TextEncoding 显示。我对在 C#(.net4.0 框架)中使用 UTF8Encoding 类生成的文件有点困惑,我认为它会在默认 txt 文件中生成一个文件(编码:CP_ACP)。
我认为编码名称 CP_ACP 、 Winodows 和 ANSI 指的是同一个东西,Windows 默认是 ANSI,它会省略任何 unicode 字符信息。
如果我使用 C# 库中的 UTF8Encoding 类创建一个文本文件(如下),它会是 MS DOS txt 文件格式吗?
byte[] title = new UTF8Encoding(true).GetBytes("New Text File");
根据提供的答案,很明显 UTF8 不等同于 MSDOS txt 格式,应该使用 Encoding.GetEncoding(850) 方法来获取编码库。
我阅读了以下帖子以检查我的信息,但尚无定论。 https://blogs.msdn.microsoft.com/oldnewthing/20120220-00?p=8273
https://blog.mh-nexus.de/2015/01/character-encoding-confusion
https://blogs.msdn.microsoft.com/oldnewthing/20090115-00?p=19483
最后的结论是在创建要转换回实际文件的字节数组时使用 Encoding.GetEncoding(850)(注意:我使用的是字节数组,因为我可以利用现有的中间件)。
【问题讨论】:
-
是的,了解 AUS 的代码页和另一个稍微无关的快速代码页很有用,Tab char 是与这些平面文件类型一起使用的分隔符吗(通常我的意思是允许遗留系统处理)?
-
为什么会有反对票?
标签: c# windows utf-8 character-encoding