2011-04-01 9 views
3

J'ai un problème.Boîte de dialogue de téléchargement de fichier

Dans l'application ASP.NET, j'ai créé un lien vers un document, le nom du document est stocké dans la base de données et lorsque l'utilisateur clique sur le lien, le dialogue Téléchargement de fichier apparaît.

Un problème se produit lorsque le nom du fichier est Serbe Cyrilic, la boîte de dialogue Téléchargement de fichier affiche le nom du fichier avec des caractères étranges. Voir l'image

File download file name strange characters

whene j'utilise HtmlEncode pour nom de fichier IE fonctionne très bien (affiche le nom du fichier à droite), mais problème est dans FireFox.

Merci.

+2

montrent Peut-être que votre code, non? –

+0

duplication possible de [Comment afficher un nom de fichier non-ascii dans la boîte de téléchargement de fichier dans les navigateurs?] (Http://stackoverflow.com/questions/149058/how-to-display-a-non-ascii-filename-in -le-fichier-download-box-dans-navigateurs) – devnull

Répondre

2

Vous devez encoder des caractères non-AscII. J'utilise cette méthode:

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

et vérifiez si vous devez encoder - il devrait fonctionner alors dans IE et FF:

if (Page.Request.Browser.IsBrowser("IE")) 
fileName = URLEncode(fileName); 
+2

Ok merci, mais vous avez déjà une méthode pour UrlEncode HttpUtility.UrlEncode (tekst), vous n'avez pas eu à écrire le vôtre. J'ai travaillé de cette façon, mais je voulais voir s'il y avait une solution peut-être meilleure. – buda

Questions connexes