How can I get CSV file encoding UTF-8 in C#.Net?

57,805

Solution 1

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.

Solution 2

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;
        }

Solution 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);
Share:
57,805
SuSanda
Author by

SuSanda

I am a system engineer. My religious is Buddhism. I live in Myanmar(Burma).

Updated on July 09, 2022

Comments

  • SuSanda
    SuSanda almost 2 years

    I wanna make CSV file encoding UTF-8. Now, my CSV file cannot show Japanese Fonts. I want C# code to solve this problem.

  • Horia Toma
    Horia Toma over 10 years
    use: new UTF8Encoding(false) instead of Encoding.UTF8 if you want to avoid the BOM symbol
  • razon
    razon over 6 years
    Warn: preamble is not used. It was important to use preamble in my case, data must be concated from preamble+data: data=preamble .Concat(data).ToArray();