你的content不是用UTF8编码的吧
你可能需要System.Text.Encoding.GetEncoding("BIG5");

解决方案 »

  1.   

    Big5是针对繁体字的,我们的这个程序给多个国家的客户使用,韩国、台湾、土耳其等,所以我觉得还是得用utf-8,我在本地试过用UTF-8打开这个文件,各国语言显示都正常。我在想是不是跟客户的excel有关?
    再细说一下这个文件的生成流程:
    通过service从数据库里查询数据,发布到服务器上,然后通过asp.net的程序去读取数据并生成csv文件,然后客户用excel打开这个csv文件。
    service 代码:        [WebInvoke(Method = "GET", UriTemplate = "GenerateFile/{country}/{startdate}/{enddate}")]
            public Stream GetData(string country, string startDate, string endDate) 
            {
                 string SuccessfulData = "test string";
                byte[] byteArray = System.Text.Encoding.Unicode.GetBytes(SuccessfulData); 
                MemoryStream stream = new MemoryStream(byteArray);
                return stream;
            }
    asp.net代码:                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
      
                    request.Method = "GET";                request.Timeout = 300000;
                    request.Headers.Add("SOAPAction", uri);                Stream resp = ((HttpWebResponse)request.GetResponse()).GetResponseStream();
                    StreamReader rdr = new StreamReader(resp,Encoding.Unicode);                var content = rdr.ReadToEnd();
                    if (string.IsNullOrEmpty(content))
                    {
                        LblConfirmMess.Text = "You don't have sufficient permission to view this item";
                        return;
                    }
                    byte[] bytes = Encoding.UTF8.GetBytes(content);                Response.ContentType = "application/octet-stream";                Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
                    Response.BinaryWrite(bytes);
                    Response.Flush();
                    Response.End();我看有的在request上加request.ContentType = "text/plain;charset=utf-8";
    如果在request里加上这句话,response的contentType是不是也要改成一样的?