2012-12-13 12 views
6

私はスウェーデン語のäåöのようなスウェーデン語の文字で完全なファイルを1行ずつ読み込んでいますが、スウェーデン語の文字列を読み込んで保存するにはどうすればいいですか?ここで私のコードがあると私はUTF8エンコーディングを使用しています:スウェーデン文字をtxtファイルから正しく読み取る方法

TextReader tr = new StreamReader(@"c:\testfile.txt", System.Text.Encoding.UTF8, true); 
tr.ReadLine() //returns a string but Swedish characters are not appearing correctly... 
+0

正確には機能しないのは何ですか? – Jeroen

+0

'tr.ReadLine()'によって返される文字列はスウェーデン語の文字を表示しません。 – Geek

+0

C#の文字列は常にUTF-16でエンコードされます。あなたのStreamReaderにUTF-8エンコーディングを渡すことによって、行が正しくエンコードされたUTF-16文字列オブジェクトを返すようになります。それは今だけそれはこのように表示されています... – CodeZombie

答えて

12

あなたはSystem.Text.Encoding.GetEncoding(1252)にSystem.Text.Encoding.UTF8を変更する必要があります。下記を参照

 System.IO.TextReader tr = new System.IO.StreamReader(@"c:\testfile.txt", System.Text.Encoding.GetEncoding(1252), true); 
     tr.ReadLine(); //returns a string but Swedish characters are not appearing correctly 
+0

優秀!ありがとう! – Geek

0

System.Text.Encoding.Defaultはスウェーデンの文字をサポートしますすなわち、私は自分自身をそれを考え出しました。

TextReader tr = new StreamReader(@"c:\testfile.txt", System.Text.Encoding.Default, true); 
+0

なぜ入力エンコードをUTF-8に設定しましたか? – CodeZombie

+1

@Geekはい、あなたのデフォルト言語がスウェーデン語の言語なら、それはうまくいきます。私の投稿が表示されない場合は、そのコードページが表示されます。 – Sorceri

+1

UTF-8とCP1252の両方がスウェーデン語をサポートしているため、言語や文字のサポートとは関係ありません。それは、CP1252であるファイルエンコーディングと関係がある。ファイルを正しく読むためには、ファイルのエンコーディング(言語ではなく)を常に知る必要があります。 – Esailija

関連する問題