我的专有文本编码使用所有 256 字节值,较低的 128 字节值与 ascii 基本相同(重要的东西,即控制字符、空格、换行符都完全相同)。我希望能够在 C# .NET 中将这个文件作为字节读取,并且仍然保持逐行读取它并对其进行正则表达式搜索的能力。在 C# .NET 中执行此操作的最佳方法是什么?
我意识到,如果我的编码只使用前 128 字节值,这将很简单。我只是不希望较高的字符意外转换为 unicode 值。
我的专有文本编码使用所有 256 字节值,较低的 128 字节值与 ascii 基本相同(重要的东西,即控制字符、空格、换行符都完全相同)。我希望能够在 C# .NET 中将这个文件作为字节读取,并且仍然保持逐行读取它并对其进行正则表达式搜索的能力。在 C# .NET 中执行此操作的最佳方法是什么?
我意识到,如果我的编码只使用前 128 字节值,这将很简单。我只是不希望较高的字符意外转换为 unicode 值。
听起来您只想实现自己的Encoding
. 这样做相当简单,然后你可以将它传递给StreamReader
构造函数(或File.OpenText
等)。
如果您查看我(多年前)编写的用于处理 EBCDIC 的代码,您应该能够将其用作合理的起点。
顺便说一句,与 ASCII 的重叠似乎与此无关。
我只是不希望较高的字符意外转换为 unicode 值。
每当您将任何二进制数据转换为文本时,您都在转换为 Unicode 值。这就是.NET 中文本的定义方式。
您可以在 strem 阅读器中读取文件,如下所示:
StreamReader sr = new StreamReader("C:\\Details.txt", ASCIIEncoding.ASCII);