如何确定C#中char的代码页850中的索引?

时间:2011-08-31 11:34:09

标签: c# .net character-encoding codepages

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

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

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

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

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

3 个答案:

答案 0 :(得分:4)

在线上使用Encoding.GetBytes()。 CP850是一个8位编码,因此字节数组应该包含与字符串一样多的元素,每个元素都是字符的值。

答案 1 :(得分:3)

只需将文件读取为字节,即可获得代码页850字符代码:

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

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

答案 2 :(得分:1)

你不需要。

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