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

我的C#代码无法读取文件中的特殊字符

解决C#读取特殊字符乱码问题

原因排查与解决方案

  • 匹配文件实际编码:你尝试的UTF-8和默认编码无效,大概率是文件本身采用了东欧语言常用的Windows-1250编码,直接指定该编码读取即可:
    string[] lines = File.ReadAllLines(filePath, Encoding.GetEncoding(1250));
    
  • 自动检测文件编码:若不确定文件编码,可通过检查字节顺序标记(BOM)初步判断,或借助编码检测逻辑验证:
    using (var stream = new FileStream(filePath, FileMode.Open))
    {
        var bom = new byte[4];
        stream.Read(bom, 0, 4);
        Encoding encoding = Encoding.Default;
        
        // 根据BOM判断常见编码
        if (bom[0] == 0xef && bom[1] == 0xbb && bom[2] == 0xbf)
            encoding = Encoding.UTF8;
        else if (bom[0] == 0xff && bom[1] == 0xfe)
            encoding = Encoding.Unicode;
        else if (bom[0] == 0xfe && bom[1] == 0xff)
            encoding = Encoding.BigEndianUnicode;
        
        // 重置流位置并读取内容验证
        stream.Position = 0;
        using (var reader = new StreamReader(stream, encoding))
        {
            string content = reader.ReadToEnd();
            // 验证特殊字符是否正常显示
        }
    }
    
  • 统一编码写入规则:如果文件是你生成的,写入时强制使用带BOM的UTF-8编码,从根源避免编码不匹配:
    File.WriteAllLines(filePath, lines, new UTF8Encoding(true)); // true表示生成带BOM的UTF-8文件
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:45:26