为什么用了UTF-8还乱吗。 
整个站全是UTF-8
数据类型是NVARCHAR
public static void ResponseFile(string filepath, string filename, string filetype)
            {
                Stream iStream = null;                // 缓冲区为10k
                byte[] buffer = new Byte[10000];                // 文件长度
                int length;                // 需要读的数据长度
                long dataToRead;                try
                {
                    // 打开文件
                    iStream = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read);
                    // 需要读的数据长度
                    dataToRead = iStream.Length;                    HttpContext.Current.Response.ContentType = filetype;
                    HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + Utils.UrlEncode(filename.Trim()).Replace("+", " "));                    while (dataToRead > 0)
                    {
                        // 检查客户端是否还处于连接状态
                        if (HttpContext.Current.Response.IsClientConnected)
                        {
                            length = iStream.Read(buffer, 0, 10000);
                            HttpContext.Current.Response.OutputStream.Write(buffer, 0, length);
                            HttpContext.Current.Response.Flush();
                            buffer = new Byte[10000];
                            dataToRead = dataToRead - length;
                        }
                        else
                        {
                            // 如果不再连接则跳出死循环
                            dataToRead = -1;
                        }
                    }
                }
                catch (Exception ex)
                {
                    HttpContext.Current.Response.Write("Error : " + ex.Message);
                }
                finally
                {
                    if (iStream != null)
                    {
                        // 关闭文件
                        iStream.Close();
                    }
                }
                HttpContext.Current.Response.End();
            }

解决方案 »

  1.   

    在这里try 
                    { 
                        // 打开文件 
                        iStream = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read); 
                        // 需要读的数据长度 
                        dataToRead = iStream.Length;                     HttpContext.Current.Response.ContentType = filetype; 
                        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + Utils.UrlEncode(filename.Trim()).Replace("+", " "));                     while (dataToRead > 0) 
                        { 
                            // 检查客户端是否还处于连接状态 
                            if (HttpContext.Current.Response.IsClientConnected) 
                            { 
                                length = iStream.Read(buffer, 0, 10000); 
                                HttpContext.Current.Response.OutputStream.Write(buffer, 0, length); 
                                HttpContext.Current.Response.Flush(); 
                                buffer = new Byte[10000]; 
                                dataToRead = dataToRead - length; 
                            } 
                            else 
                            { 
                                // 如果不再连接则跳出死循环 
                                dataToRead = -1; 
                            } 
                        } 
                    } 增加一句try 
                    { 
                        // 打开文件 
                        iStream = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read); 
                        // 需要读的数据长度 
                        dataToRead = iStream.Length;                     HttpContext.Current.Response.ContentType = filetype; 
                        HttpContext.Current.Response.ContentType = "application/octet-stream";
                        HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + Utils.UrlEncode(filename.Trim()).Replace("+", " "));                     while (dataToRead > 0) 
                        { 
                            // 检查客户端是否还处于连接状态 
                            if (HttpContext.Current.Response.IsClientConnected) 
                            { 
                                length = iStream.Read(buffer, 0, 10000); 
                                HttpContext.Current.Response.OutputStream.Write(buffer, 0, length); 
                                HttpContext.Current.Response.Flush(); 
                                buffer = new Byte[10000]; 
                                dataToRead = dataToRead - length; 
                            } 
                            else 
                            { 
                                // 如果不再连接则跳出死循环 
                                dataToRead = -1; 
                            } 
                        } 
                    }