2012-01-16 14 views
0

ファイルからポルトガル語の文字を読み込もうとしていて、問題が継続しています。ファイルから国際文字を読み取ることができません

私は(テスト目的のために)次のC#のコードを持っている:

var streamReader = new StreamReader("file.txt"); 

while (streamReader.Peek() >= 0) 
{ 
    var buffer = new char[1]; 
    streamReader.Read(buffer, 0, buffer.Length); 
    Console.Write(buffer[0]); 
} 

これは、ファイル内の各文字を読み込み、コンソールに出力します。 ファイルには「cãsa」が含まれています。 コンソールの出力は "c?sa"です。

私は間違っていますか?

+0

'StreamReader'コンストラクタを見てください。エンコーディングを指定できます。 –

+0

Console.Write( "cssa")を実行すると、そのメッセージはコンソールにどのように表示されますか? – drf

+0

ファイルの書き込みに使用されたエンコーディングを知る必要があります。 –

答えて

2

正しいエンコーディングを使用してファイルを読む必要があります。デフォルトでは、ファイルはUTF-8として読み込まれます。正しいエンコーディングでない場合は、そのような問題が発生します。この例では

、Iは、UTF-16であり、この場合UnicodeEncodingに、エンコーディングを取るコンストラクタのオーバーロード使用しています:この例で

using(var streamReader = new StreamReader("file.txt", Encoding.UnicodeEncoding)) 
{ 
    while (streamReader.Peek() >= 0) 
    { 
     var buffer = new char[1]; 
     streamReader.Read(buffer, 0, buffer.Length); 
     Console.Write(buffer[0]); 
    } 
} 

を、私はポルトガル語に対応し、コードページ860を使用してい:

using(var streamReader = new StreamReader("file.txt", Encoding.GetEncoding(860))) 
{ 
    while (streamReader.Peek() >= 0) 
    { 
     var buffer = new char[1]; 
     streamReader.Read(buffer, 0, buffer.Length); 
     Console.Write(buffer[0]); 
    } 
} 
+0

@PeterEvjan - これはまさに_examples_でした。テキストファイルがどのエンコーディングに保存されているかを知る必要があります。あなたが想像しているように、私はその情報を持っていません。 – Oded

関連する問題