2011-10-19 17 views
2

類似のトピックを見ましたが、解決策が見つかりませんでした。私の問題は、記号がブルガリア語/キリル文字/である.txtファイルがあることです。しかし、それらを読み込もうとすると、成功しません。C#で.txtファイルからキリル記号を読み取る方法

StreamReader reader = new StreamReader(fileName,Encoding.UTF8); 

if (File.Exists(fileName)) 
{ 
    while ((line = reader.ReadLine()) != null) 
    { 
     Console.WriteLine(line); 
    } 
} 

をそして私は、私はキリルためである書いたGetEncodingで(1251)、としようとしたとして、私はまた、すべての可能にエンコーディング値を変更:私はこのコードを読み取ろうとしました。 .txtファイルを保存すると、そこにある各エンコーディング/ UNICODE、UTF-8、BigEndianUnicode、ANSI /とエンコーディングの各組み合わせで保存しようとしましたが、コードで設定しますが、やはり成功しません。

正しい方法でキリル記号を読み取る方法についてのアイデアは、適切に表示されます。 これはサンプルテキストです: "Етопримерентекст。"

ありがとうございます! :)

+0

あなたがコンテンツを知っていますが、それらのファイルのエンコーディングを知っている必要があります。それらをすべて試してみると、Hexビューアで表示する方が効率的かもしれません。 –

答えて

5

あなたの問題は、コンソールがキリル文字を表示できないということです。 Console.WriteLineにブレークポイントを置き、line変数を調べてください。明らかに、最初に正しいエンコーディングを知る必要があります。 :-)

あなたはこれを試してみてください、私を信頼していない場合:これを行うコンソールプログラムを作る:

string line = "Ето примерен текст"; 
Console.WriteLine(line); 
return 0; 

は、コンソールを監視し、ライン変数を見て、return 0;にブレークポイントを置きます。

私はUnicodeのコンソールは、.NET 4.5

で「新しい」ものの一つでなければなりませんそして、あなたは、このページを読むことを試みることができます追加します:c# unicode string output

+0

コンソールはここでポイントではない、私はASPでそれを使用しています。NETアプリケーションで適切なエンコーディングを使用すると、問題は、適切なエンコーディングを持つテキストファイルから読み取られた文字列をcodebehingで取得したときに、デバッグモードの文字列が "?????" ... –

2

あなたが持っている問題は読んでいませんテキストが表示されますが、表示されます。

コンソールウィンドウにUnicodeテキストを表示するのが本当の目的ならば、いくつか変更する必要があります。しかし、たとえば、WinFormsやWPFアプリケーションでテキストを表示すると、問題は発生しません。デフォルトではUnicodeが使用されます。

デフォルトでは、コンソールはユニコードを処理しません。また、ユニコードのグリフを持つフォントを使用します。次の操作を行う必要があります。

  1. テキストファイルをUTF8として保存します。
  2. スタートUnicodeが有効になっているコンソール:cmd \u
  3. 変更フォントに「ルシーダサンズのUnicode」:コンソールウィンドウメニュー - >プロパティ - >フォント
  4. 変更Unicodeへのコードページ:chcp 65001
  5. アプリを実行します。

あなたの文字が正しく表示されます。

enter image description here

関連する問題