2

我有一个使用代码页 850 编码的文本文件。我正在通过以下方式读取此文件:

using (var reader = new StreamReader(filePath, Encoding.GetEncoding(850)))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        //...
    }
    //...
}

现在,我需要line在代码页 850 中该字符的从零开始的索引上方的循环中字符串中的每个字符,例如:

for (int i = 0; i < line.Length; i++)
{
    int indexInCodepage850 = GetIndexInCodepage850(line[i]); // ?
    //...
}

这可能吗?怎么可能int GetIndexInCodepage850(char c)

4

3 回答 3

4

使用Encoding.GetBytes()就行了。CP850 是一种 8 位编码,因此字节数组应该包含与字符串中的字符一样多的元素,并且每个元素都是字符的值。

于 2011-08-31T11:40:21.900 回答
3

只需将文件读取为字节,您就有了代码页 850 字符代码:

byte[] data = File.ReadAllBytes(filePath);

但是,您不会将其分成几行。您需要在数据中查找的 CR 和 LF 字符代码是 13 和 10。

于 2011-08-31T11:40:32.773 回答
1

你不需要。

您已经在 streamreader 构造函数中指定了编码。从 reader.ReadLine() 返回的字符串已经使用 CP850 进行了编码

于 2011-08-31T11:53:57.067 回答