2016-06-09 4 views
0

Я написал этот код для экспорта файла CSV из DataGridView:Unicode UTF-8 экспорт CSV из DataGridView

 var dialog = new SaveFileDialog { Filter = @"Csv File|*.csv" }; 
     var result = dialog.ShowDialog(); 
     if (result != DialogResult.OK) 
      return; 
     var builder = new StringBuilder(); 
     var rowcount = dgvSum.Rows.Count; 
     var columncount = dgvSum.Columns.Count; 
     var headerCols = new List<string>(); 
     for (var j = 0; j < columncount - 1; j++) 
     { 
      headerCols.Add(dgvSum.Columns[j].HeaderText); 
     } 
     builder.AppendLine(string.Join(";", headerCols.ToArray())); 
     for (var i = 0; i < rowcount - 1; i++) 
     { 
      var cols = new List<string>(); 
      for (var j = 0; j < columncount - 1; j++) 
      { 
       cols.Add(dgvSum.Rows[i].Cells[j].Value.ToString()); 
      } 
      builder.AppendLine(string.Join(",", cols.ToArray())); 
     } 
     File.WriteAllText(dialog.FileName, builder.ToString()); 
     MessageBox.Show(@"Csv file was created."); 

Но я хочу, чтобы показать символы Юникода в моем созданном файле. Как я могу конвертировать в UTF-8?

+0

Кто-нибудь мне поможет ???? – Hooman

+0

Вы уже пишете его в UTF8. Неясно, какова ваша проблема, пожалуйста, предоставьте [mcve], демонстрирующий вашу проблему. –

+0

i пользователь персидских символов. но это дало мне неясный файл – Hooman

ответ

0

попробовать это:

System.IO.File.WriteAllBytes(fileLocation, Encoding.UTF8.GetBytes(builder.ToString())); 

Использование:

WriteAllBytes метод вторых пары означают, что вы можете сохранить файл из строки с определенной кодировкой, что вы хотите, включая UTF-8.

Вы можете использовать ReadAllBytes для сравнения с другим кодированием строкового блока, если они являются одинаковыми.

string test = "Hello World!\u1255"; 
string fileLocation = "the file location you want to save"; 
File.WriteAllBytes(fileLocation , Encoding.UTF8.GetBytes(test)); 

Assert.AreEqual(Encoding.UTF8.GetBytes(test), file.ReadAllBytes()); 
+0

как cani использовать его? – Hooman

+0

'File.WriteAllText' уже использует' UTF8' (см. [Источник ссылки] (http://referencesource.microsoft.com/#mscorlib/system/io/file.cs,3768ad284a63029f)), так что это даст тот же результат , –

+0

я получаю ошибку: Тяжесть \t Код \t Описание \t Проект \t файла \t Line \t Подавление Государственный Ошибка \t CS1503 \t Аргумент 2: не удается преобразовать из 'байт []' на 'строка' \t WindowsFormsApplication2 \t C: \ Users \ kanoonadmin \ Desktop \ WindowsFormsApplication2 \ WindowsFormsApplication2 \ Form1.cs Active – Hooman