通过C#读取txt文件(在unicode和utf8中)

mtk*_*nko 16 c# unicode encoding utf-8

我创建了两个具有相同内容的"txt文件"(Windows记事本)"谢谢 - спасибо"并将它们保存在utf8和unicode中.在记事本中他们看起来很好.然后我尝试使用.Net读取它们:

...File.ReadAllText(utf8FileFullName, Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)

...File.ReadAllText(unicodeFileFullName, Encoding.Unicode);
Run Code Online (Sandbox Code Playgroud)

但在这两种情况下我都得到了这个"谢谢 - ???????".怎么了?

Upd:utf8的代码

static void Main(string[] args)
        {
            var encoding = Encoding.UTF8;
            var file = new FileInfo(@"D:\encodes\enc.txt");
            Console.OutputEncoding = encoding;
            var content = File.ReadAllText(file.FullName, encoding);
            Console.WriteLine("encoding: " + encoding);
            Console.WriteLine("content: " + content);
            Console.ReadLine();
        }
Run Code Online (Sandbox Code Playgroud)

结果: 谢谢ÑпаÑибо

key*_*rdP 15

编辑为UTF8应该支持角色.您似乎正在输出到控制台或没有编码设置的位置.如果是这样,您需要设置编码.对于控制台,您可以执行此操作

string allText = File.ReadAllText(unicodeFileFullName, Encoding.UTF8);
Console.OutputEncoding = Encoding.UTF8;
Console.WriteLine(allText);
Run Code Online (Sandbox Code Playgroud)


ali*_*ini 5

使用默认的编码类型

File.ReadAllText(unicodeFileFullName, Encoding.Default);
Run Code Online (Sandbox Code Playgroud)

它将修复????Chracters。