Отображение расширенных символов, импортирующих CSV в DataGridView - PullRequest
2 голосов
/ 03 апреля 2020

Я использую 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);
                }
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...