Как я могу получить CSV-файл с кодировкой UTF-8 в C # .Net? - PullRequest
15 голосов
/ 17 декабря 2010

Я хочу сделать CSV-файл в кодировке UTF-8. Теперь мой CSV-файл не может отображать японские шрифты. Я хочу, чтобы код C # решил эту проблему.

Ответы [ 3 ]

30 голосов
/ 17 декабря 2010

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

using(var sw = new StreamWriter("testfile_utf8.csv", false, Encoding.UTF8))
{
    sw.WriteLine("頼もう");
}

Если вы откроете этот файл в Excel, он будет отображать текст на японском языке, как и ожидалось.
Если вы не включите параметр Encoding.UTF8, он покажет бред.

Надеюсь, это то, что вы ищете.

5 голосов
/ 16 июля 2014

Этот код помогает отправить текст из файла CSV, чтобы сохранить его в виде закодированного файла CSV. Чтобы использовать его, позвоните, как показано ниже, и сохраните его.

GetCSVFileContent ( "Your_CSV_FileName")

protected byte[] GetCSVFileContent(string fileName)
        {
            StringBuilder sb = new StringBuilder();
            using (StreamReader sr = new StreamReader(fileName, Encoding.Default, true))
            {
                String line;
                // Read and display lines from the file until the end of 
                // the file is reached.
                while ((line = sr.ReadLine()) != null)
                {
                    sb.AppendLine(line);
                }
            }
            string allines = sb.ToString();


            UTF8Encoding utf8 = new UTF8Encoding();


            var preamble = utf8.GetPreamble();

            var data = utf8.GetBytes(allines);


            return data;
        }
1 голос
/ 22 июля 2011
 StringBuilder sb = new StringBuilder();          


 var columnNames = dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName).ToArray();
 sb.AppendLine(string.Join(",", columnNames));

 foreach (DataRow row in dt.Rows)
 {
     var fields = row.ItemArray.Select(field => field.ToString()).ToArray();
     sb.AppendLine(string.Join(",", fields));
 }

 File.WriteAllText(fileName, sb.ToString(), Encoding.UTF8);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...