如何使用C#从.txt文件中读取西里尔文符号

时间:2011-10-19 12:13:23

标签: c# encoding console-application

我看到类似的主题但找不到解决方案。我的问题是我有一个.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 /与编码的每个组合我通过代码设置,但是再次没有成功。 / p>

如何以正确的方式阅读西里尔符号的任何想法都会受到关注。 以下是此示例文本:“Етопримерентекст。”

提前致谢! :)

2 个答案:

答案 0 :(得分:5)

您的问题是控制台无法显示西里尔字符。尝试在Console.WriteLine上放置一个断点并检查line变量。显然,您首先需要知道正确的编码! : - )

如果您不信任我,请尝试以下方法:制作一个执行此操作的控制台程序:

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

return 0;上放置一个断点,观察控制台并观察线变量。

我要补充一点,unicode控制台应该是.NET 4.5中的“新”东西之一

您可以尝试阅读此页面:c# unicode string output

答案 1 :(得分:2)

您遇到的问题不是阅读文字,而是显示文字。

如果您的真实目的是在控制台窗口中显示Unicode文本,那么您将不得不进行一些更改。但是,如果您将在WinForms或WPF应用程序中显示文本,那么您将不会遇到问题 - 默认情况下它们使用Unicode。

默认情况下,控制台不会处理unicode,也不会使用具有unicode字形的字体。您需要执行以下操作:

  1. 将文本文件另存为UTF8。
  2. 启动启用了unicode的控制台:cmd \u
  3. 将字体更改为“Lucida Sans Unicode”:控制台窗口菜单 - >属性 - >字体
  4. 将代码页更改为Unicode:chcp 65001
  5. 运行您的应用。
  6. 现在可以正确显示您的角色:

    enter image description here