【发布时间】:2013-09-23 04:13:03
【问题描述】:
我创建了两个内容相同的 txt 文件(Windows 记事本)“谢谢 - спасибо”,并将它们保存为 utf8 和 unicode。在记事本中,它们看起来不错。然后我尝试使用 .Net 阅读它们:
...File.ReadAllText(utf8FileFullName, Encoding.UTF8);
和
...File.ReadAllText(unicodeFileFullName, Encoding.Unicode);
但在这两种情况下,我都得到了“谢谢 - ???????”。怎么了?
更新: 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();
}
结果: 感谢 ÑпаÑибо
【问题讨论】:
-
记事本默认使用的编码是Encoding.Default。与您的选择不兼容。 Windows appcompat 具有传奇色彩,但确实妨碍了现代实践。不要犹豫,通过更改组合框中的编码选择来敲击记事本。或者使用编写 BOM 的更好的文本编辑器。