Я использую Visual Studio 2019 и создаю настольное приложение, используя C#.
Обычно я пытаюсь импортировать файл CSV в DataGridView. Все работает, когда я запускаю программу, за исключением того, что есть специальные символы, которые появляются с? блоки. В рассматриваемом файле используется символьная карта Windows -1252 (западноевропейская). Это игровой файл (программа предназначена для более эффективной модификации игры), поэтому я не могу просто изменить кодировку файла.
Я использую решение csvParser, которое я нашел здесь, в StackOverflow - я разместил код, который отправляет данные в таблицу после нажатия кнопки.
Как видите, я попытался добавить «Encoding.UTF8» в TextFieldParser, но это не помогло.
Я также пытался изменить шрифт, используемый в самой таблице, но я попробовал пару шрифтов Unicode, и ни один из них не помог (в настоящее время используется пользовательский интерфейс Segoe).
Надеюсь, кто-то может помочь!
{
string path = "C:\\Users\\user\\Documents\\Paradox Interactive\\Europa Universalis IV\\mod\\testmod\\map";
openFileDialog1.InitialDirectory = path;
openFileDialog1.Title = "Open Definitions File";
openFileDialog1.ShowDialog();
path = openFileDialog1.FileName;
using (TextFieldParser csvParser = new TextFieldParser(path, Encoding.UTF8))
{
csvParser.CommentTokens = new string[] { "#" };
csvParser.SetDelimiters(new string[] { ";" });
csvParser.HasFieldsEnclosedInQuotes = false;
csvParser.ReadLine();
while (!csvParser.EndOfData)
{
string[] fields = csvParser.ReadFields();
string defID = fields[0];
string defRed = fields[1];
string defGreen = fields[2];
string defBlue = fields[3];
string defProvince = fields[4];
string defBlank = fields[5];
string[] row0 = { defID, defProvince, defRed, defGreen, defBlue, defBlank };
defData.Rows.Add(row0);
}
}
}