使用File.CreateText()创建的文件不在UTF-8中

时间:2018-12-21 05:22:10

标签: c# utf-8 character-encoding

File.CreateText()的文档说:“创建或打开用于写入UTF-8编码文本的文件。”

但是,创建的文件是用西欧编码的。

String template = File.ReadAllText(Settings.Default.template, Encoding.UTF8);
template = template.Replace("{{content}}", "éèê");
using (StreamWriter sw = File.CreateText(item_path))
{
   sw.Write(template);
}

我使用此代码生成带有<meta charset="UTF-8">的HTML页面,但是除非手动将浏览器的编码设置更改为“西欧”,否则带重音的字母无法正确显示。

有人知道为什么文件不是UTF-8格式吗?

1 个答案:

答案 0 :(得分:0)

我无法重现您的问题,这是我用来生成一堆低端utf8字符并将其写入文件的代码:

        StringBuilder sb = new StringBuilder();
        for (int i = 1; i < 1025; i++)
        {
            sb.Append((char)i);
        }

        string fn = Path.GetTempFileName();
        using (var sw = File.CreateText(fn))
        {
            sw.Write(sb.ToString());
            sw.Flush();
            sw.Close();
        }
        Process.Start(Path.GetDirectoryName(fn));

这是我在记事本++中打开时看到的内容:

enter image description here

相同的操作会带来什么?