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

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 SAP HANA SQL Script 。SUM OVER 怎么加where
  • ¥15 怎么获取红包封面的原始链接,并且获取红包封面序列号
  • ¥100 微信小程序跑脚本授权的问题
  • ¥60 为什么使用python对地震数据进行umap降维后,数据成图会出现不连续的现象
  • ¥100 房产抖音小程序苹果搜不到安卓可以付费悬赏
  • ¥15 STM32串口接收问题
  • ¥15 腾讯IOA系统怎么在文件夹里修改办公网络的连接
  • ¥15 filenotfounderror:文件是存在的,权限也给了,但还一直报错
  • ¥15 MATLAB和mosek的求解问题
  • ¥20 修改中兴光猫sn的时候提示失败