Как я могу определить индекс в кодовой странице 850 для символа в C #? - PullRequest
2 голосов
/ 31 августа 2011

У меня есть текстовый файл с кодовой страницей 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)?

Ответы [ 3 ]

4 голосов
/ 31 августа 2011

Используйте Encoding.GetBytes () в строке. CP850 - это 8-битная кодировка, поэтому в байтовом массиве должно быть столько же элементов, сколько в строке есть символы, и каждый элемент является значением символа.

3 голосов
/ 31 августа 2011

Просто прочитайте файл в байтах, и у вас будет кодовая страница 850 кодов символов:

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

Однако вы не разбиваете его на строки.Коды символов для CR и LF, которые вам нужно искать в данных, - 13 и 10.

1 голос
/ 31 августа 2011

Вам не нужно.

Вы уже указали кодировку в конструкторе потокового чтения.Строка, возвращаемая из reader .ReadLine () уже будет кодироваться с использованием CP850

...