在 Streamwriter 上设置 UTF8 编码

fis*_*g3r -1 c# encoding utf-8

我需要将a的内容写入DataTablecsv。里面还有一些中文字符串。

\n\n

我曾经使用以下脚本:

\n\n
System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(dlg.FileName);\n\nstring strHeader = "";\nfor (int s = 0; s < table.Columns.Count; s++)\n{\n    strHeader += table.Columns[s].ColumnName + ",";\n}\nstreamWriter.WriteLine(strHeader);\n\nfor (int m = 0; m < table.Rows.Count; m++)\n{\n    string strRowValue = "";\n    for (int n = 0; n < table.Columns.Count; n++)\n    {\n        strRowValue += table.Rows[m][n] + ",";\n    }\n    streamWriter.WriteLine(strRowValue);\n}\nstreamWriter.Close();\n
Run Code Online (Sandbox Code Playgroud)\n\n

但这显然不能处理 Unicode 字符。它写的是类似的内容\xc3\xa6\xc5\x93\xc3\xa7\xe2\x80\xb9\xe2\x80\x94。\n所以我尝试像这样设置编码:

\n\n
System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(dlg.FileName, Encoding.UTF8);\n
Run Code Online (Sandbox Code Playgroud)\n\n

但后来我明白了Argument 1: cannot convert from \'string\' to \'System.IO.Stream。那么在这个例子中我该如何设置编码呢?

\n

Ale*_*kov 10

System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(new FileStream(dlg.FileName, FileMode.Open), Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)