在C#.NET中,如何读取基于ascii专有编码的文本文件

在C#.NET中,如何读取基于ascii专有编码的文本文件,c#,.net,character-encoding,binaryfiles,C#,.net,Character Encoding,Binaryfiles,我的专有文本编码使用所有256字节的值,低128字节的值基本上与ascii相同(重要的内容,即控制字符、空格、换行符都完全相同)。我希望能够在C#.NET中以字节的形式读取此文件,并且仍然保持逐行读取和对其执行正则表达式搜索的能力。在C#NET中实现这一点的最佳方法是什么 我意识到,如果我的编码只使用前128字节的值,这将很简单。我只是不希望更高的字符被意外地转换为unicode值。听起来您只是想实现自己的编码子类。这样做相当简单,然后您可以将其传递给StreamReader构造函数(或File

我的专有文本编码使用所有256字节的值,低128字节的值基本上与ascii相同(重要的内容,即控制字符、空格、换行符都完全相同)。我希望能够在C#.NET中以字节的形式读取此文件,并且仍然保持逐行读取和对其执行正则表达式搜索的能力。在C#NET中实现这一点的最佳方法是什么


我意识到,如果我的编码只使用前128字节的值,这将很简单。我只是不希望更高的字符被意外地转换为unicode值。

听起来您只是想实现自己的
编码子类。这样做相当简单,然后您可以将其传递给
StreamReader
构造函数(或
File.OpenText
等)

如果你看一下,你应该能够把它作为一个合理的起点

顺便说一下,与ASCII的重叠似乎与此无关

我只是不希望更高的字符被意外地转换成unicode值


每当您将任何二进制数据转换为文本时,您都在转换为Unicode值。这就是.NET中文本的定义方式。

您可以在strem reader中读取文件,如下所示:

StreamReader sr = new StreamReader("C:\\Details.txt", ASCIIEncoding.ASCII);

您可以将路径“C:\\Details.txt”替换为您的文件路径号,该路径号仅适用于文件实际为ASCII的情况。事实并非如此。(此外,首选
Encoding.ASCII
而不是
ascienceoding.ASCII
Encoding
的子类是否能够动态更改编码系统?因为我实际上需要在多个编码之间切换,其中一些编码在编译时是未知的。@Matt:但是整个特定流是否会在一种编码中?如果是,我会编写单独的子类,并动态选择一种,但是始终使用同一个。正如我所说,其中一些在编译时可能不知道。@马特:我没有说您必须在编译时知道哪一个。您可以在执行时动态选择一个,但仍然使用同一个来读取整个数据。
Encoding=ChooseEncoding(…);var reader=File.OpenText(File,Encoding)…
我的意思是有些编码本身可能不为人所知。我不仅仅是在说应该使用哪些编码。