C# 文件下载对话框

C# 文件下载对话框,c#,asp.net,encoding,localization,C#,Asp.net,Encoding,Localization,我有一个问题 在ASP.NET应用程序中,我创建了指向某个文档的链接,文档名存储在数据库中,当用户单击链接文件下载对话框时,就会出现 当文件名为塞尔维亚西里尔语时会出现问题,文件下载对话框会显示带有一些奇怪字符的文件名。见图片 当我使用HtmlEncode作为文件名时,IE工作正常(显示正确的文件名),但问题出在FireFox中 谢谢。您必须对非AscII字符进行编码。我正在使用这种方法: public static string URLEncode(string tekst)

我有一个问题

在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;
    }  

好的,谢谢,但您已经有了UrlEncode HttpUtility.UrlEncode(tekst)的方法,您不需要编写自己的方法。我一直在用这种方法,但我想看看是否有更好的解决方案
if (Page.Request.Browser.IsBrowser("IE"))  
fileName = URLEncode(fileName);