HttpContext.Current.Response.Write输出内容到word会乱码
大家都知道,word和html可以互相转换的.就是基于这个思想,我们可以把组织好的html代码输出到word中,即不用启动word进程也因此没有关闭进程的责任,此外还不受组件版本的限制,以及word版本的限制(至少我知道WORD2000 - WORD2007都可以)
可现在的问题,一旦我在HttpContext.Current.Response.Write该方法输出的html代码过长,则生成的word文件中所有的非英文字符全部变成乱码(看起来更像是韩文),把这些字符解析后发现,他们的二进制码的确变了.
public static void PrintToClient(string strFileContent, string strFileName, string extendName) { /*过滤掉windows下文件名称中的非法字符*/ Regex reg = new Regex(@"[\\,/,:,\*,\?,<,>,\|]{1,}|" + "\"{1,}"); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.Charset = "GB2312"; //设置了类型为中文防止乱码的出现 HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlPathEncode(reg.Replace(strFileName, "") + extendName)); HttpContext.Current.Response.ContentType = "application/ms-word;charset=GB2312"; HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); //设置输出流为简体中文 HttpContext.Current.Response.Write(strFileContent); HttpContext.Current.Response.End(); }