2009-03-12 5 views
1

現在、摂氏記号が°Cの代わりにCとして読み込まれる問題が発生しています。StreamReaderでファイルを読み取るときのファイルエンコーディング

コード化されたようなものです。代わりに

  using (StreamReader sr = new StreamReader(this._inFilePath)) 

  using (StreamReader sr = new StreamReader(this._inFilePath,System.Text.Encoding.Unicode ,true)) 

が、私は今、ごみを取得しています....元のファイルのエンコーディングは、StreamReaderをエンコーディングと一致する必要がない:私はこれを実行しようとしましたか?私はコンパクトなフレームワーク2.0を使用しています。

私はthisをオンラインで見つけましたが、これを使用すると、バイト配列にすべてを読み込み、各行の終わりを検出し、Unicodeに変換してから、プログラムロジックを進めます。誰でもこのクラスを使用しましたか?

+0

は、元のファイルのエンコーディングは何

公共のStreamReader(文字列のパス、BOOL detectEncodingFromByteOrderMarks)でしたか? –

+0

utf-8。 ストリームリーダへのパラメータとしてutf-8を渡すと、データは読み込まれますが、CelsiusはC – sarsnake

+1

になりますので、ファイルをUnicodeで保存する必要がありますか?愚かな質問を許してください – sarsnake

答えて

2

はい、StreamReaderの構築時に正しいエンコーディングを指定する必要があります。 .NETがあなたのエンコーディングを検出できるかもしれません。この動作を要求するために使用できるブール値パラメータを取るStreamReaderコンストラクタのオーバーロードがあります。

+0

基本的に、ファイルをUnicodeで読み込むには、最初にUnicodeでファイルを保存する必要があります。 – sarsnake

+0

どうすればいいですか? – sarsnake

+1

ユニコードをサポートするエンコーディングを使用する必要があります。通常、これはUTF-8またはUTF-16(.NETでは「Unicode」と呼ばれます)です。 ASCIIまたはANSI(Encoding.Default)を使用しないでください。あなたはファイルを保存することに関する別の質問を掲示し、あなたの状況をより詳しく記述することができます。 –

関連する問題