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

.NET 8 MVC项目文本文件读写连字符乱码问题求助

解决文本文件读写中弯引号乱码问题

问题分析

弯引号(“”)属于Unicode扩展字符,ASCII编码完全不支持这类字符,直接用ASCII读取会导致字符丢失或乱码。而如果读取时未指定与源文件实际编码一致的编码规则,即使写入时选择UTF8/Unicode,也会因为读取阶段的编码错误导致乱码。

解决方案

1. 确认源文件的实际编码

用文本编辑器(如Notepad++)打开源文件,查看其编码格式(常见为UTF-8、UTF-8带BOM、UTF-16、GBK等)。

2. 读取时指定匹配的编码

修改读取代码,显式指定与源文件一致的编码:

  • 若源文件为UTF-8(含带BOM/不带BOM):
string wdata = System.IO.File.ReadAllText(file, System.Text.Encoding.UTF8);
  • 若源文件为UTF-16(Unicode):
string wdata = System.IO.File.ReadAllText(file, System.Text.Encoding.Unicode);
  • 若源文件为GBK/GB2312:
string wdata = System.IO.File.ReadAllText(file, System.Text.Encoding.GetEncoding("GBK"));

3. 写入时保持编码兼容性

推荐使用UTF-8编码写入,确保跨平台兼容性:

System.IO.File.WriteAllText(wfile, wdata, System.Text.Encoding.UTF8);

如果需要和源文件编码完全一致,也可以沿用读取时的编码规则。

4. 特殊情况处理

如果源文件是UTF-8不带BOM,File.ReadAllText默认会使用系统编码读取,这时候必须显式指定Encoding.UTF8才能正确识别字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 00:15:55