2011-10-19 72 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

你知道的內容,但你還必須知道這些文件的編碼。嘗試所有這一切都是一種發現,在十六進制查看器中查看可能更有效。 –

回答

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。

默認情況下,控制檯不處理unicode,或使用具有unicode字形的字體。您需要執行以下操作:

  1. 將您的文本文件保存爲UTF8。
  2. 開始它支持Unicode控制檯:cmd \u
  3. 字體更改爲「龍力三世統一」:控制檯窗口菜單 - >屬性 - >字體
  4. 更改代碼頁到Unicode:chcp 65001
  5. 運行你的應用程序。

你的人物現在可以正確顯示:

enter image description here