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

无法以Windows-1252编码写入文件,生成UTF-8问题求助

解决Windows-1252文件读写被转为UTF-8的问题

我太懂这种踩坑的烦躁了——依赖Encoding.Default确实容易掉坑里,尤其是处理项目外的外部文件时。咱们直接来拆解问题、解决问题:

问题核心原因

Encoding.Default根本不是绑定Visual Studio高级保存选项的!它指向的是当前操作系统的ANSI默认编码:比如中文Windows系统里它是GB2312,只有英文系统才会默认是Windows-1252。而且VS的高级保存选项只作用于项目内的代码文件,对你读写的外部文本文件完全没影响。这就是为什么你指定了Encoding.Default,结果还是生成UTF-8文件的原因。

直接有效的解决方案

别再依赖Encoding.Default了,直接明确指定Windows-1252编码就稳了,用Encoding.GetEncoding(1252)来精准定位编码:

修改后的读取代码

using (StreamReader sr = new StreamReader(fileName, Encoding.GetEncoding(1252))) 
{ 
    String s = sr.ReadToEnd(); 
    return s; 
}

修改后的写入代码

File.WriteAllText(fileName, joinedFileString, Encoding.GetEncoding(1252));

额外避坑提示

  • 编辑过程中如果引入了Windows-1252不支持的字符(比如特殊emoji、非西欧语言字符),写入时会被替换成?或者替代字符,所以要确保编辑后的内容只在1252编码的字符范围内。
  • 验证文件编码可以用Notepad++:打开文件后看右下角的编码标识,确认显示的是Windows-1252而非UTF-8。

内容的提问来源于stack exchange,提问作者KeizerHarm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:12:38