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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条