【问题标题】:How to read Cyrillic symbols from a .txt file with C#如何使用 C# 从 .txt 文件中读取西里尔符号
【发布时间】:2011-10-19 12:13:22
【问题描述】:

我看到了类似的主题,但找不到解决方案。我的问题是我有一个 .txt 文件,其中的符号是保加利亚语 / 是西里尔文 /,但是在尝试阅读它们之后,没有成功。我试图阅读这段代码:

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

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

我还将编码值更改为 all possible ,因为我尝试使用 GetEncoding(1251),我写的是西里尔字母。当我保存 .txt 文件时,我尝试使用每种不同的编码来保存它 / UNICODE、UTF-8、BigEndianUnicode、ANSI / 在每个与编码的组合中,我正在通过代码设置,但再次没有成功。

任何关于如何以正确方式阅读西里尔符号的想法都将得到应用。 这是示例文本:“Ето примерен текст。”

提前致谢! :)

【问题讨论】:

  • 您知道内容,但您还必须知道这些文件的编码。尝试所有这些是一种找出方法,在 Hex 查看器中查看可能更有效。

标签: c# encoding console-application


【解决方案1】:

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

如果你不信任我,试试这个:制作一个控制台程序来做这个:

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

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

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

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

【讨论】:

  • 控制台不是这里的重点,我在 ASP.NET 应用程序中使用正确的编码,问题是当我进入编码字符串时,该字符串是从具有正确编码的文本文件中读取的在调试模式下编码字符串是“??????” ...
【解决方案2】:

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

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

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

  1. 将文本文件另存为 UTF8。
  2. 启动一个启用 unicode 的控制台:cmd \u
  3. 将字体更改为“Lucida Sans Unicode”:控制台窗口菜单 -> 属性 -> 字体
  4. 将代码页更改为 Unicode:chcp 65001
  5. 运行您的应用程序。

您的角色现在将正确显示:

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    相关资源
    最近更新 更多