weixin_43280015 2022-07-14 21:33 采纳率: 62.5%
浏览 35
已结题

Winform中StreamReader读取中文时出现乱码

Winform中StreamReader读取中文时出现乱码

private void button1_Click(object sender, EventArgs e)
{

        string filepath = @"E:\DotNet\2019年\01月\01.txt";
        StreamReader sr =new StreamReader (filepath,System.Text.Encoding.Default);
        string fileDate = sr.ReadLine();        //文本第一行为文件日期,不作为DataTable的Columns创建
        string colName = sr.ReadLine();      //文本第二行作为DataTable的Columns创建
        DataTable dtNew = new DataTable();
        //文本columns创建
        string[] col = colName.Split(',');        
        foreach (string i in col) { 
            dtNew.Columns.Add(i.ToString());
        }
        //文本rows创建
        string nextLine;
        while ((nextLine = sr.ReadLine()) != null) {
            DataRow dr = dtNew.NewRow();
            string[] rowContent = nextLine.Split(',');
            for (int i = 0; i <= dtNew.Columns.Count; i++)
            {
                dr[i] = rowContent[i].ToString();
            }

            dtNew.Rows.Add(dr);
        }
        sr.Close();
        //输出DataTable中数据
        dataGridView1.DataSource = dtNew;
    }

这是报错信息:System.Data.DuplicateNameException:“A column named '��������' already belongs to this DataTable.”

已经按照网上的说法采用Default让系统获取当前操作系统的当前ANSI代码页的编码方案,
StreamReader sr =new StreamReader (filepath,System.Text.Encoding.Default);但是仍然报以上错误信息。
我把txt文件首行的列名改成英文后测试,程序可以正常运行,但中文就不行。

  • 写回答

1条回答 默认 最新

  • IT技术分享社区 数据库领域优质创作者 2022-07-14 21:54
    关注

    System.Text.Encoding.Default 改为 System.Text.Encoding.Default.UTF8 试一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月29日
  • 已采纳回答 7月21日
  • 创建了问题 7月14日

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算