在streamwriter上设置UTF8编码

时间:2015-12-17 10:32:01

标签: c# encoding utf-8

我需要将DataTable的内容写入csv。其中也有一些中文字符串。

我以前使用以下脚本:

System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(dlg.FileName);

string strHeader = "";
for (int s = 0; s < table.Columns.Count; s++)
{
    strHeader += table.Columns[s].ColumnName + ",";
}
streamWriter.WriteLine(strHeader);

for (int m = 0; m < table.Rows.Count; m++)
{
    string strRowValue = "";
    for (int n = 0; n < table.Columns.Count; n++)
    {
        strRowValue += table.Rows[m][n] + ",";
    }
    streamWriter.WriteLine(strRowValue);
}
streamWriter.Close();

但这显然不能处理Unicode字符。它写的是æœç‹—之类的东西。 所以我试着像这样设置编码:

System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(dlg.FileName, Encoding.UTF8);

然后我得到Argument 1: cannot convert from 'string' to 'System.IO.Stream。那么我怎么能在这个例子中设置编码呢?

1 个答案:

答案 0 :(得分:2)

System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(new FileStream(dlg.FileName, FileMode.Open), Encoding.UTF8);