文件下载对话框

时间:2011-04-01 12:48:09

标签: c# asp.net encoding localization

我有一个问题。

在ASP.NET应用程序中,我创建了一些文档的链接,文档名称存储在数据库中,当用户单击链接文件下载对话框时出现。

当文件名为Serbian Cyrilic时出现问题,“文件下载”对话框显示带有一些奇怪字符的文件名。见图片

File download file name strange characters

Whene我使用HtmlEncode获取文件名IE工作正常(显示正确的文件名),但问题出现在FireFox中。

感谢。

1 个答案:

答案 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);