【江湖救急】繁体字乱码

cherish_55 2014-03-17 05:24:28
从数据库提取某些数据(有些含有繁体字),最后生成csv文件,现在生成的csv文件把繁体字都显示成乱码了。

主要代码:
service:
string ConvertToCSV(DataTable dt)
{
StringBuilder data = new StringBuilder();
data.Append('111');
data.Append("\n");
return data.toString();
}

asp程序用这个数据生成csv
Stream resp = ((HttpWebResponse)request.GetResponse()).GetResponseStream();
StreamReader rdr = new StreamReader(resp);
var content = rdr.ReadToEnd();
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();

以上就是关键代码,繁体字怎么解决?
先谢谢各位了!
...全文
330 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cherish_55 2014-03-31
  • 打赏
  • 举报
回复
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是不是也要改成一样的?
对数酱 2014-03-17
  • 打赏
  • 举报
回复
你的content不是用UTF8编码的吧 你可能需要System.Text.Encoding.GetEncoding("BIG5");

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧