You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#指定ISO-8859-1编码写文件却显示为UTF-8的问题求助

问题原因及解决建议

你的代码其实确实是用ISO-8859-1编码写入文件的,Notepad++显示UTF-8是因为以下两点:

  • 你写入的内容全是ASCII字符(a-z、空格这类),而ASCII是ISO-8859-1和UTF-8的共同子集,两种编码对这些字符的字节表示完全一致(都是单字节,数值相同)。
  • 你没有写入BOM(字节顺序标记),而UTF-8的默认识别逻辑里,纯ASCII内容会被优先判定为UTF-8。

验证及解决方法

  • 写入非ASCII的Latin1字符:修改代码里的写入内容,加入一个ISO-8859-1范围内的非ASCII字符(比如é),这样文件里就会出现0xE9这个字节,Notepad++就能正确识别为ISO-8859-1了。修改后的代码示例:
private void button1_Click(object sender, EventArgs e)
{
    string file = @"C:\Temp\test.txt";
    if (File.Exists(file)) { File.Delete(file); }
    using (StreamWriter sw = new StreamWriter(file, false, Encoding.GetEncoding("iso-8859-1")))
    {
        // 加入é这个Latin1字符
        sw.Write("test1 test2 test3 é");
        sw.Flush();
    }
}
  • 手动切换Notepad++编码查看:如果只需要确认编码,不用修改内容的话,可以在Notepad++菜单栏点击「编码」->「字符集」->「西欧」->「ISO-8859-1」,此时编辑器会正确显示文件的编码类型(虽然内容显示和UTF-8一致,但编码标识会更新)。

内容的提问来源于stack exchange,提问作者Tobias G.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:02:05