I wanna make CSV file encoding UTF-8. Now, my CSV file cannot show Japanese Fonts. I want C# code to solve this problem.
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);
This code helps to text from a csv file to save it as a encoded csv file. To use it Call as below and save it.
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;
}
SuSanda,
I'm not sure about your current code or your actual text you're trying to save, but this might get you in the right direction.
using(var sw = new StreamWriter("testfile_utf8.csv", false, Encoding.UTF8))
{
sw.WriteLine("頼もう");
}
If you open that file in Excel, it will show the Japanese text as expected.
If you do not include the Encoding.UTF8
parameter, it will display gibberish.
I hope that's what you're looking for.