我有一个问题。
在ASP.NET应用程序中,我创建了一些文档的链接,文档名称存储在数据库中,当用户单击链接文件下载对话框时出现。
当文件名为Serbian Cyrilic时出现问题,“文件下载”对话框显示带有一些奇怪字符的文件名。见图片
Whene我使用HtmlEncode获取文件名IE工作正常(显示正确的文件名),但问题出现在FireFox中。
感谢。
答案 0 :(得分:2)
您必须编码非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);