【发布时间】:2010-12-07 08:33:11
【问题描述】:
这把我逼疯了。 上周我想我搞砸了,但不幸的是没有......
所以我想为其他用户创建一个 CSV 下载,以便在 MS-Word 中打开(他们想要 CSV 格式)
所以我最终在 MVC2 控制器中使用了这段代码:
Response.AddHeader("Content-Disposition", "attachment; filename=PersonalMessages.csv");
Response.ContentType = "application/csv";
string s = new DownloadService().GetAddresses();
Response.Write(s);
Response.End();
return null;
字符串 's' 包含(以及其他信息)这些字符:é å æ É à
当我在记事本中打开它时:好的
当我在记事本++中打开它时:好的
当我在 Excel 中打开它时:不行,它会显示: é Ã¥ æ É
(当我在 Notepadd++ 中打开它时,它说它是没有 BOM 的 UTF8 编码,无论我尝试在构造函数中使用带有布尔值的 UTF8 编码来获取 BOM,它都没有成功)
所以上周我问了一个问题,答案是让GetAddresses()函数返回一个字节数组。
所以我确实使用这个转换了我的文本:
// C# to convert a string to a byte array.
public static byte[] StrToByteArray(string str)
{
System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding();
return encoding.GetBytes(str);
}
,并在响应中写入字节数组,一切都很好!记事本、记事本++和Excel! 不错,直播不错。
但后来我发现他们是在 Word 中打开文件。好吧,我想没问题。
但随后他们提供了帮助:Word 无法(直接)打开文件,它首先要求编码,这是一个问题,因为他们在自动化过程中使用它。
当他们在记事本中打开文件并将其保存为 unicode 时,一切顺利。
我在action方法中也试过这个:
Response.ContentEncoding = Encoding.Unicode ;
Response.HeaderEncoding = Encoding.UTF8;
但这并没有帮助。
有人知道吗?
【问题讨论】:
-
您尝试了很多次的问题的不利方面是,它变成了一个为他人阅读的大故事,如果您花时间阅读所有内容并阅读此评论,请感谢您。 ...
标签: c# asp.net-mvc encoding character-encoding download