конвертировать .csv (ANSI) в .csv (UTF-8) - PullRequest
0 голосов
/ 05 сентября 2018

У меня японская среда на моем ПК. Поэтому мне нужна программа для преобразования моего .csv ANSI в .csv UTF-8. Я пытался использовать этот код:

string st = File.ReadAllText("C:\\Users\\user\\Desktop\\train1.csv");            
System.IO.File.WriteAllText("C:\\Users\\user\\Desktop\\train2.csv",st.ToString(), Encoding.UTF8); 

Файл train2.csv успешно создан, однако текст становится нечитаемым из-за конвертации. Как правильно это сделать?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Есть StreamReader класс может поддерживать чтение файлов с кодировкой

StreamReader st = new StreamReader("C:\\Users\\user\\Desktop\\train1.csv", 
                                                 System.Text.Encoding.ASCII);

После этого вы можете записать свои данные в файл на основе StreamWriter

0 голосов
/ 05 сентября 2018

Я предполагаю, что кодировка входного файла не определена правильно, поэтому вы должны определить ее

string st = File.ReadAllText("C:\\Users\\user\\Desktop\\train1.csv", Encoding.Default); //ANSI

Документация:

Этот метод пытается автоматически определить кодировку файла на основе наличия меток порядка байтов. Можно определить форматы кодирования UTF-8 и UTF-32 (как с прямым порядком байтов, так и с прямым порядком байтов).

Используйте перегрузку метода ReadAllText (String, Encoding) при чтении файлы, которые могут содержать импортированный текст, потому что нераспознанные символы могут быть прочитаны неправильно.

...