2017-09-27 5 views
0

Dites que j'ai une chaîne avec "é" dedans, et je veux l'envoyer via une URL au contrôleur suivant, les caractères sont encodés en% C3% A9, et quand il est reçu en l'autre contrôleur, il est décodé pour "Ã ©". Ma question est, comment encoder le "é" sur l'URL ainsi quand il est reçu dans l'autre contrôleur il est décodé à "é"? Pour l'instant, je les remplace manuellement. J'ai besoin d'un moyen de le faire automatiquement et avec n'importe quel caractère spécial (éèà ...) Merci.Envoyer des caractères spéciaux via l'URL Java

+0

[ ' URLEncoder'] (https://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html) et ['URLDecoder'] (https://docs.oracle.com/javase/7 /docs/api/java/net/URLDecoder.html)? – KarelG

+0

Copie possible de [HTTP URL Address Encoding en Java] (https://stackoverflow.com/questions/724043/http-url-address-encoding-in-java) –

Répondre

0

Malheureusement, il n'existe aucun moyen de déclarer le codage des données d'URL. L'encodage commun utilisé pour être ISO-8859-1 ou Latin1, mais de nos jours, UTF-8 est souvent utilisé dans les nouveaux développements. La raison en est que la spécification de servlet indique que lorsque le charset n'est pas spécifié, ISO-8859-1 est implicite, mais HTML 4.0 recommande UTF-8 pour les URL. Le problème est que l'URL est composée d'octets et que le conteneur de servlet le convertit en caractères java avant de le transmettre à l'application, vous devez donc déclarer le jeu de caractères utilisé au niveau du conteneur de servlet. Pour des raisons de compatibilité, le célèbre Tomcat avant la version 8.0 a supposé par défaut un jeu de caractères Latin1 pour l'URL. Depuis la version 8.0.0, la valeur par défaut dépend maintenant du paramètre "Conformité strict des servlets". Il est certifié ISO-8859-1 lorsque vrai et UTF-8 quand faux

Références:


Pour votre question précise, vous avez deux façons pour traiter correctement le caractère é:

  • laisser votre configuration de conteneur de servlet inchangé et encode l'URL dans la norme ISO-8859-1 (é sera %E9)
  • bâton UTF-8 dans l'URL, mais déclarer au conteneur de servlet