我有一个问题。
在 ASP.NET 应用程序中,我创建了一些文档的链接,文档名称存储在数据库中,当用户单击链接时,会出现文件下载对话框。
当文件名为塞尔维亚西里尔文时会出现问题,文件下载对话框显示的文件名包含一些奇怪的字符。看图
当我对文件名使用 HtmlEncode 时,IE 工作正常(显示正确的文件名),但问题出在 FireFox 中。
谢谢。
最佳答案
您必须对非 AscII 字符进行编码。我正在使用这种方法:
public static string URLEncode(string tekst)
{
byte[] t = Encoding.UTF8.GetBytes(tekst);
string s = "";
for (int i = 0; i < t.Length; i++)
{
byte b = t[i];
int ib = Convert.ToInt32(b);
if (ib < 46 || ib > 126)
{
s += "%" + ib.ToString("x");
}
else
{
s += Convert.ToChar(b);
}
}
return s;
}
然后检查是否必须对其进行编码 - 它应该可以在 IE 和 FF 中工作:
if (Page.Request.Browser.IsBrowser("IE"))
fileName = URLEncode(fileName);
关于c# - 文件下载对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5513583/