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 に答える