C# Linq在阅读.csv文件时无法识别捷克语字符

ffscu2ro  于 2022-12-06  发布在  C#
关注(0)|答案(2)|浏览(150)

基本上,当试图用Linq把一个.csv文件放到一个列表中时,所有带有变音符号的字符都变成了〈?〉字符。我应该怎么做才能让代码保持它们在.csv文件中的样子呢?

using (StreamReader ctec = new StreamReader(souborovejmeno))
            {
                var lines = File.ReadAllLines(souborovejmeno).Select(a => a.Split('\t'));
                var csv = from line in lines
                          select (from piece in line
                          select piece).ToList();

                foreach (var c in csv)
                {
                    hraci.Add(new Hrac(c[0], c[1]));
                    listBox1.Items.Add(c[0]);
                }
            }

提前感谢答案。抱歉,如果这是相当愚蠢的,我不是太有经验的编码。

vngu2lb8

vngu2lb81#

我认为你的问题是错过了编码。我看到你已经有答案以上的作品。

var lines = File.ReadAllLines(path, Encoding.UTF8).Select(a => a.Split('\t'));

但我强烈建议您使用CsvHelper

dotnet add package CsvHelper

用这样的东西

public class Record
{
   [Index(0)]
   public int Key { get; set; }

   [Index(1)]
   public string Value { get; set; }
}
....
using (var reader = new StreamReader(souborovejmeno, Encoding.UTF8))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
    var records = csv.GetRecords<Record>();
    foreach(var record in records) {
        hraci.Add(new Hrac(record.Key, record.Value));
        listBox1.Items.Add(record.Key);
    } 
}
...
wfveoks0

wfveoks02#

尝试包含如下编码:

var lines = File.ReadAllLines(path, Encoding.UTF8).Select(a => a.Split('\t'));

确保导入System.Text

相关问题