2010-08-25 4 views
0

J'envoie au navigateur une requête pour enregistrer un fichier avec le nom du fichier. Le nom de fichier peut inclure des espaces, donc je remplace tous les espaces par %20. Internet Explorer et Chrome transfèrent %20 vers des espaces, mais Firefox ne le fait pas. Pourquoi? Y a-t-il un moyen pour que tous les navigateurs affichent l'espace?Pourquoi Firefox ne transfère pas% 20 dans l'espace ('')?

Ceci est mon code:

String codedName = new String(URLEncoder.encode(name, "UTF-8")); 
codedName = codedName.replaceAll("\\+", "%20"); 
response.setHeader("Content-Disposition", "attachment; filename=\"" + codedName+ "\""); 
+1

Pourquoi modifiez-vous le résultat de encoder()? + est le code normal pour l'espace dans les URL. – PhiLho

+0

True. Mais de plus en plus je continue de voir% 20 utilisé à la place de +, ce qui est bizarre. –

Répondre

2

Cela dépend de la façon dont vous créez le nom du fichier. Habituellement, vous pouvez simplement définir le nom du fichier dans le champ d'en-tête et le framework l'encodera correctement. Dans votre cas, vous semblez encoder le nom deux fois. Essayez sans l'encoder.

0

Vous pouvez utiliser Javascript pour encoder l'URL.

La syntaxe pour l'encodage de JavaScript URL est:

encodeURI(uri) 

Ainsi, le code serait: (Notez l'espace entre mon et essai.)

<script type="text/javascript"> 

var uri="my test.html?name=jason&age=25"; 
document.write(encodeURI(uri)+ "<br />"); 

</script> 

Quels résultats dans:

my%20test.html?name=jason&age=25 

Selon votre commentaire récent "Comment faire en Java?"

La syntaxe serait quelque chose comme:

encode(String s) 

Une simple recherche Google révélerait plus d'informations.

Questions connexes