文件下载对话框

3
我有一个问题。
在ASP.NET应用程序中,我创建了一个链接到某个文档,文档名称存储在数据库中,当用户点击链接时,文件下载对话框会出现。
当文件名为塞尔维亚西里尔文时,问题就出现了,文件下载对话框显示带有一些奇怪字符的文件名。请见上图。
如果我使用HtmlEncode处理文件名,IE将正常工作(显示正确的文件名),但是Firefox会出现问题。
谢谢。

1个回答

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

2
好的,谢谢。但是你已经有了UrlEncode方法HttpUtility.UrlEncode(tekst),你不需要自己编写。我也曾经这样做过,但我想看看是否有更好的解决方案。 - buda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接