c# - 文件下载对话框

标签 c# asp.net encoding localization

我有一个问题。

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

当文件名为塞尔维亚西里尔文时会出现问题,文件下载对话框显示的文件名包含一些奇怪的字符。看图

File download file name strange characters

当我对文件名使用 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/

相关文章:

c# - 如何在 asp c# 上将中继器按钮排成一行

c# - OwnerDraw ComboBox with VisualStyles

c# - 无法确定文本框 KeyPress 事件的 '.' keychar

c# - C# 如何让进度条在不同的线程中运行

c# - 扩展和过滤 C# 数组

jquery - 如果我删除 Alert(),则选择标记不会在 ASP.Net 上使用 jquery 填充数据

asp.net - 如何在运行时更改注入(inject)实例的 Serilog LogLevel

javascript - ColdFusion 编码问题 -encodeForHTML 和encodeForJavascript 删除反斜杠

bash - openssl enc -base64 -d 在一定长度后不解码字符串

php - 错误 : "Input is not proper UTF-8, indicate encoding !" using PHP's simplexml_load_string