Я хочу сделать кодировку CSV файла UTF-8. Теперь мой CSV файл не может отображать японские шрифты. Я хочу, чтобы код С# решил эту проблему.
Как я могу получить кодировку CSV файла UTF-8 в С#.Net?
Ответ 1
SuSanda,
Я не уверен в вашем текущем коде или вашем фактическом тексте, который вы пытаетесь сохранить, но это может привести вас в правильном направлении.
using(var sw = new StreamWriter("testfile_utf8.csv", false, Encoding.UTF8))
{
sw.WriteLine("頼もう");
}
Если вы откроете этот файл в Excel, он покажет японский текст, как ожидалось.
Если вы не включили параметр Encoding.UTF8
, он отобразит тарабарщину.
Я надеюсь, что вы ищите.
Ответ 2
Этот код помогает передать текст из файла 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;
}
Ответ 3
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);