我做了一个服务器端动态生成一个文本文件,让客户下载的功能,但是发现下载下来的文本文件都是采用U8-DOS编码的(使用UltraEdit打开,状态栏显示是U8-DOS)。但是要求必须是DOS格式的才可以。
代码如下:
 // 从缓冲区中清除当前输出内容
 Response.Clear(); // 添加头信息,为"文件下载/另存为"对话框指定默认文件名
 Response.AddHeader("Content-Disposition", "attachment; filename="+getSessionID()+".txt"); //// 添加头信息,指定文件大小,让浏览器能够显示下载进度
 //Response.AddHeader("Content-Length", str.Length.ToString() ); // 制定返回文件的字符集
 //Response.Charset = "iso-8859-2"; //设置Charset,对输入好像没有任何效果
 //Response.ContentEncoding=new System.Text.UTF8Encoding();//系统只提供ASCIIEncoding、UTF8Encoding和UnicodeEnding,分别测验了一下,返回结果要么乱码,要么不是DOS字符集的。 // 指定返回的是一个不能被客户端读取的流,必须被下载
 Response.ContentType = "text/text"; // 把文件流发送到客户端
 Response.Write("文件开始");请问应该如何设置Response的输出字符集?
通过直接设置Response的CharSet或者ContentEncoding属性吗?
Response.Write的输入字符串是否需要转换成相应的字符集,如何转换一个字符串的字符集?请各位大侠多多帮助了,谢谢!

解决方案 »

  1.   

    hi,icyer
    如何使用GB2312啊?能否说得详细一点,因为我直接给CharSet属性设置,不会报错,但也没有任何效果。
      

  2.   

    我试过把Response.ContentEncoding=new System.Text.UTF7Encoding();
    再用Encoding.convert函数将所有需要写出的字符串转换成utf7的字符集,但是结果还是一样,好像这个convert函数一点效果都没有看到。:(
      

  3.   

    问题搞定,需要做如下设置:
    Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
    感谢2位的帮助,;)