【问题标题】:csvReader skips characterscsvReader 跳过字符
【发布时间】:2015-03-05 22:36:33
【问题描述】:

我正在读取 ASP.NET Web 应用程序中的 Csv 文件以生成报告。 CsvReader 元素不会读取特殊字符,例如 ± 或 Σ。

            var avar = FileUploader.PostedFile.FileName;
            var myfile = File.OpenText(avar);
            CsvReader csv = new CsvReader(myfile);
            data = csv.GetRecords<T>().ToList();

读者跳过上面提到的特殊字符。每隔一个字符被读取,包括特殊字符周围的字符。谁能告诉我如何解决这个问题?谢谢。

【问题讨论】:

  • 您可能需要为 CsvReader 指定文本编码。
  • 您介意扩展一下您的建议吗?这是我的第一个 Web 开发项目。

标签: c# asp.net csvhelper


【解决方案1】:

我使用此链接Effective way to find any file's Encoding 中的GetEncoding 来查找我的文件的编码。

然后,我设置配置:

CsvConfiguration config = new CsvConfiguration();
config.Delimiter = ",";
Encoding enc = GetEncoding(FileUploader.PostedFile.FileName);
config.Encoding = enc;
config.HasHeaderRecord = true;
config.QuoteNoFields = true;

接下来,我使用 FileStream 加载文件并将其发送到 StreamReader。

FileStream stream = File.OpenRead(FileUploader.PostedFile.FileName);
StreamReader reader = new StreamReader(stream, Encoding.GetEncoding(enc.HeaderName));
CsvReader csv = new CsvReader(reader, config);
datas = csv.GetRecords<T>().ToList();

当我加载文件时所有字符都是可读的。是一个 IEnumerable 类

【讨论】:

    猜你喜欢
    • 2017-04-28
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    相关资源
    最近更新 更多