URLEncoder et javascript:escape()

URLEncoder et javascript:escape() - Java - Programmation

Marsh Posté le 19-05-2005 à 14:57:03    

la fonction javascript escape() permet d'url encoder une chaine.
Par exemple la chaine "Mon fichier à moi.xls" devient : "Mon%20fichier%20%E0%20moi.xls"
 
Je voudrais faire la même chsoe en Java.
Sans trop me poser de question je fais appelle à URLEncoder.encode(chaine, "UTF-8" ) en pensant que ça faisait la même chose que le escape sus-cité.
Mais non.
Ca me donne : "Mon+fichier+%C3%A0+moi.xls"
J'ai tenté aussi URLEncoder.encode(chaine, "ISO-8859-1" ) : "Mon+fichier+%E0+moi.xls"
 
Donc si je veux ouvrir une connexion HTTP et récupérer le document "Mon fichier à moi.xls" comment puis-je faire ???
 
Merci.

Reply

Marsh Posté le 19-05-2005 à 14:57:03   

Reply

Marsh Posté le 19-05-2005 à 15:00:27    

y a 2 méthodes pour encoder les espaces dans le format des url : soit un '+' soit en utilisant le code du caractère en hexadecimal => esapce = '%20'
 
bref, les donnes méthodes fonctionne => tu peux utiliser URLEncoder.encode.
Et laisse l'encodage en "UTF-8", ca n'a rien à voir avec ce que tu essayes de faire ...


Message édité par benou le 19-05-2005 à 15:00:48

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 19-05-2005 à 15:14:10    

benou a écrit :

y a 2 méthodes pour encoder les espaces dans le format des url : soit un '+' soit en utilisant le code du caractère en hexadecimal => esapce = '%20'
 
bref, les donnes méthodes fonctionne => tu peux utiliser URLEncoder.encode.
Et laisse l'encodage en "UTF-8", ca n'a rien à voir avec ce que tu essayes de faire ...


 
C'est ce que je croyais aussi, mai ça ne fonctionne pas.
 
Si je fais un bête replace de ' ' par '%20' pour le fichier "Mon fichier.xls", ça fonctionne.
Si j'appelle "Mon+fichier.xls" il va bien chercher un fichier qui contient un '+' et non me le remplacezr par un ' '.
 
Je crains devoir me faire un sale tableau et une série de replaceAll() (Berrk).

Reply

Marsh Posté le 19-05-2005 à 15:16:50    

c'est quoi ton serveur web ? pacrce que même IE remplace les ' ' par des '+' ...  
remarque, peut être seulement dans les paramètre, pas dans le passe :gratgrat:
 
plutot qu'un replaceAll, boucle et encode tout ce qui est d'un code > 128 en # + code hexa du char


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 19-05-2005 à 15:18:40    

benou a écrit :

c'est quoi ton serveur web ? pacrce que même IE remplace les ' ' par des '+' ...  
remarque, peut être seulement dans les paramètre, pas dans le passe :gratgrat:
 
plutot qu'un replaceAll, boucle et encode tout ce qui est d'un code > 128 en # + code hexa du char


LE plus simple serait que mes utilisateurs arrêtent de me pondre des noms à la cons pour leurs fichiers genre moins de 10 char et tout en ascii 7bit  :D  
 
Merci pour le conseil.

Reply

Marsh Posté le 19-05-2005 à 15:28:30    

Et pour répondre à ta question c'est un Apache httpd 2.
 
Mais les caractères + et - ne sont pas ré-encoder, comment ferait-il pur les différencier.
 
Je crois qu'il y a une différence d'encodage entre l'adresse et les données d'un formulaire (que ce soit POST ou GET).

Reply

Marsh Posté le 19-05-2005 à 15:36:42    

krosso a écrit :

Mais les caractères + et - ne sont pas ré-encoder, comment ferait-il pur les différencier.


 :heink:  
le + est réencodé : %2B  
 
peut être qu'il y a une différence ouais ... mais c'est bizarre que j'ai jamais rencontré ce problème si c'est le cas ...  :??:


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 19-05-2005 à 15:44:07    

benou a écrit :

:heink:  
le + est réencodé : %2B  
 
peut être qu'il y a une différence ouais ... mais c'est bizarre que j'ai jamais rencontré ce problème si c'est le cas ...  :??:


 
ah ?
la fonction escape() ne le ré-encode pas.
 
"mon fichier à moi+toi.xls" devient "mon%20fichier%20%E0%20moi+toi.xls"

Reply

Marsh Posté le 19-05-2005 à 16:07:31    

bizarre ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed