Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将逗号分隔的文件保存为txt,获取奇怪字符_C#_Asp.net_Export To Excel - Fatal编程技术网

C# 将逗号分隔的文件保存为txt,获取奇怪字符

C# 将逗号分隔的文件保存为txt,获取奇怪字符,c#,asp.net,export-to-excel,C#,Asp.net,Export To Excel,我正在从SQL数据库中检索数据,并使用Web应用程序作为开发环境将“.txt”保存为逗号分隔的文件。 我唯一的问题是在第一列的开头添加了一些垃圾字符 例如¼日期、时间 尝试使用Encoding.ASCII和newUTF8Encoding(false)但解决了该错误 但其余的数据是完美的。下面的代码是用于保存数据的代码 System.IO.StringWriter sWriter; System.Text.StringBuilder sb = new System.

我正在从SQL数据库中检索数据,并使用Web应用程序作为开发环境将“.txt”保存为逗号分隔的文件。 我唯一的问题是在第一列的开头添加了一些垃圾字符

例如¼日期、时间

尝试使用
Encoding.ASCII
和new
UTF8Encoding(false)
但解决了该错误

但其余的数据是完美的。下面的代码是用于保存数据的代码

        System.IO.StringWriter sWriter;
        System.Text.StringBuilder sb = new System.Text.StringBuilder();

        sWriter = new System.IO.StringWriter(sb);
        string Str;

        for (int k = 0; k < (grdGridView.Columns.Count); k++)
        {
            if (k == (grdGridView.Columns.Count) - 1)
                sWriter.Write(grdGridView.HeaderRow.Cells[k].Text);
            else
                sWriter.Write(grdGridView.HeaderRow.Cells[k].Text + ","); 
        }

        sWriter.WriteLine("");

        for (int i = 0; i < (grdGridView.Rows.Count); i++)
        {

            for (int j = 0; j < (grdGridView.Columns.Count); j++)
            {

                Str = (grdGridView.Rows[i].Cells[j].Text.ToString());

                if (Str == "&nbsp;")
                    Str = "";

                if (j != (grdGridView.Columns.Count) - 1)
                { Str = (Str + ","); }

                sWriter.Write(Str);
            }
            sWriter.WriteLine();
        }
        sWriter.Close();

        // Download File Directly to Web Server
        //string HtmlInfo = sWriter.ToString().Trim();
        string HtmlInfo = sWriter.ToString();
        string DocFileName = fileName1 + ".txt";
        string FilePathName = Server.MapPath("~/Download");
        FilePathName = FilePathName + "\\" + DocFileName;
        File.Delete(FilePathName);
        FileStream Fs = new FileStream(FilePathName, FileMode.Create);
        BinaryWriter BWriter = new BinaryWriter(Fs, Encoding.GetEncoding("UTF-8"));
        BWriter.Write(HtmlInfo);
        BWriter.Close();
        Fs.Close();
System.IO.StringWriter sWriter;
System.Text.StringBuilder sb=新的System.Text.StringBuilder();
sWriter=新系统IO.StringWriter(sb);
字符串Str;
对于(int k=0;k<(grdGridView.Columns.Count);k++)
{
if(k==(grdGridView.Columns.Count)-1)
Write(grdGridView.HeaderRow.Cells[k].Text);
其他的
Write(grdGridView.HeaderRow.Cells[k].Text+“,”;
}
sWriter.WriteLine(“”);
对于(int i=0;i<(grdGridView.Rows.Count);i++)
{
对于(int j=0;j<(grdGridView.Columns.Count);j++)
{
Str=(grdGridView.Rows[i].Cells[j].Text.ToString());
如果(Str==“”)
Str=“”;
如果(j!=(grdGridView.Columns.Count)-1)
{Str=(Str+“,”);}
sWriter.Write(Str);
}
sWriter.WriteLine();
}
sWriter.Close();
//将文件直接下载到Web服务器
//字符串HtmlInfo=sWriter.ToString().Trim();
字符串HtmlInfo=sWriter.ToString();
字符串DocFileName=fileName1+“.txt”;
字符串FilePathName=Server.MapPath(“~/Download”);
FilePathName=FilePathName+“\\”+DocFileName;
File.Delete(文件路径名);
FileStream Fs=newfilestream(FilePathName,FileMode.Create);
BinaryWriter BWriter=新的BinaryWriter(Fs,Encoding.GetEncoding(“UTF-8”);
b编写器写入(HtmlInfo);
b编写器关闭();
Fs.Close();

尝试Encoding.ASCII而不是.GetEncoding(“UTF-8”)

前导字符是unicode

您可以使用
新UTF8Encoding(false)
而不是
Encoding.GetEncoding(“UTF-8”)
来禁用BOM的输出

在这里使用二进制编写器没有什么意义。您看到的字符是由BinaryWriter预先填充到字符串的字符


改用文本编写器,或者将sWriter的内容作为
字节[]

@HenkHolterman我错了,你是对的:它是一个。当我看到
GetEncoding(“UTF-8”)
和“我的文件开头有垃圾”后,我就跳了起来,甚至没有注意到它是一个
BinaryWriter
 string HtmlInfo = sWriter.ToString();
 ....
 BinaryWriter BWriter = ...
 BWriter.Write(HtmlInfo);