Java URLDecoder throws exception lorsqu'il est utilisé avec une chaîne de caractères contenant un %
J'ai un problème avec le URLDecoder de Java. Je suis l'échappement d'une Chaîne de caractères en JavaScript, et de l'envoyer à un servlet java. Ensuite, j'ai décoder les échappé à la Chaîne avec la ligne suivante:
URLDecoder.decode(request.getParameter("text"), "UTF-8");
Cela fonctionne très bien pour tous les caractères spéciaux, j'ai essayé, le seul problèmes est le '%'. Chaque fois que j'utilise ce caractère dans la chaîne, j'obtiens l'exception suivante:
java.lang.IllegalArgumentException: URLDecoder: Incomplete trailing escape (%) pattern
java.net.URLDecoder.decode(URLDecoder.java:187)
at.fhv.students.rotter.ajax.count.CountServlet.doGet(CountServlet.java:31)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
Est-ce un bug connu? Ou est-ce vraiment de ma faute?
"Je suis l'échappement d'une Chaîne de caractères en JavaScript." Comment? Vous devez être fais mal.
OriginalL'auteur Daniel Rotter | 2012-05-14
Vous devez vous connecter pour publier un commentaire.
Il n'est pas un bug. Vous envoyez un mauvais Chaîne codée. Le
%
-signe doit être codé comme%25
Si vous demande d'appel.getParameter(), je pense que vous obtenez une Chaîne décodée.
OriginalL'auteur Christian Kuetbach
Nous avons eu un problème similaire dans notre angulaire de l'application où nous avons été encodage
%
signer qu'une seule fois dans le code côté client. Quand nous avons reçu la valeur dans la servlet, il était déjà décodé en raison derequest.getParameter()
. Depuis que nous avons déjà eu URL décodeur dans notre sever code côté, le décodage du%
signer deux fois était à l'origine un"URLDecoder: Incomplete trailing escape (%) pattern"
exception. Nous avons compris que nous nous devons de ne pas encoder et de décoder les%
comme une valeur à tout pour se faire face à ce problème.OriginalL'auteur ravindra nath
Afin d'obtenir paramètre que j'ai écrit
de sorte qu'Il nous donnera les paramètres. À partir de cela, nous pouvons utiliser
String.substring()
pour obtenir préféré paramètre dans le cas de la correction de longueur ou de paramètre. Puisobtiendrez préféré chaîne codée % signe aussi.
OriginalL'auteur Dipendra Shrestha
Même j'ai été logés à la même question, et il a été résolu. Voici l'exemple de code que vous pouvez simplement utiliser pour reproduire et de résoudre ce problème.
OriginalL'auteur dubet