我看到类似的主题但找不到解决方案。我的问题是我有一个.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>
如何以正确的方式阅读西里尔符号的任何想法都会受到关注。 以下是此示例文本:“Етопримерентекст。”
提前致谢! :)
答案 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字形的字体。您需要执行以下操作:
cmd \u
chcp 65001
现在可以正确显示您的角色: