UTF-8 URL Décoder / Encoder
Je demande à mon URL pour envoyer une requête Ajax comme ça:
url += '/' + something + '/' + id;
var response;
$.ajax({
async : false,
type: 'DELETE',
url: url,
...
Mon removeId
est une variable qui inclut des caractères UTF-8. Je m'occupe de cette variable à Java côté comme cela:
@RequestMapping(value = "/something/{id}", method = RequestMethod.DELETE)
public void myMethod(HttpServletResponse response, @PathVariable String id) {
...
Cependant id
variable à Java côté différent de l'original, car les caractères UTF-8 changements d'étranges choses.
Comment puis-je envoyer des caractères UTF-8 à partir de JavaScript côté et de le transformer de nouveau à mon Java côté de Printemps (3 avec le RESTE, mon serveur web Tomcat 7)?
PS 1: Même je n'utilise pas encodeUriComponent
il semble que mon URL est l'encodage par lui-même?
PS 2: Pour rendre la question plus clairement:
i.e. my id variable is araç and sent URL is: localhost:8080/sdfasf/ara%C3%A7
Quand je vois que l'id de la variable a la valeur:
araç
au lieu de:
ara%C3%A7
N'Printemps (ou Tomcat) automatiquement? Est-il possible de décoder automatiquement quand il s'agit de contrôleur comme une variable de chemin d'accès (je veux dire sans écrire quelque chose comme:
URLDecoder.decode(id,"UTF-8");
il sera converti automatiquement)
OriginalL'auteur kamaci | 2011-11-16
Vous devez vous connecter pour publier un commentaire.
La valeur de l'id de vous voir semble être décodé à l'aide de l'iso-8859-1 jeu de caractères au lieu de utf-8. L'encodage de la trajectoire de la partie de l'url n'est pas spécifié dans java EE et il n'y a pas d'api standard pour le régler. Pour les paramètres de la requête, vous pouvez utiliser demande.setCharacterEncoding avant d'accéder à tous les paramètres de les avoir correctement décodés. Le
CharacterEncodingFilter
est exactement ce que fait, mais n'a aucune influence sur le chemin de paramètres.Pour faire ce travail dans Tomcat, vous devez définir le
URIEncoding
attribut de laConnector
élément dans sonserver.xml
"utf-8".Tous vous avez toujours voulu savoir sur l'encodage des caractères en java webapp peut être trouvé dans cette excellente réponse à une question similaire.
Je ne savais pas que c'était votre réponse et qu'il a déjà résolu votre problème lorsque j'ai posté ma réponse. L'appel de
setCharacterEncoding
n'a pas de travail pour le chemin de paramètres avec oracle OC4j conteneur, peut-être qu'il le fait avec tomcat. Bien que cela contredit certaines réponses à des questions similaires, comme stackoverflow.com/questions/8079152/... ou stackoverflow.com/questions/2630748/...merci pour votre réponse détaillée.
OriginalL'auteur Jörn Horstmann
J'ai trouvé la réponse ici: http://forum.springsource.org/showthread.php?14063-How-to-set-setCharacterEncoding-on-Request
Je n'ai que la configuration de mon côté Ressort:
et il fonctionne très bien pour de l'UTF-8.
OriginalL'auteur kamaci
Avez-vous essayé paramètre de codage de la page sur la page où vous incorporez le javascript?
OriginalL'auteur Udo Held
Assurez-vous que le codage de la page est définie à l'UTF-8 par ajout de ce droit en dessous du départ
<head>
tag:Aussi assurez-vous que le fichier JavaScript est enregistré avec l'encodage UTF-8. Vérifiez votre éditeur de texte paramètres.
Ce n'
console.log(url);
dire?Mon id variable est
araç
et l'URL est: localhost:8080/sdfasf/ara%C3%A7J'ai édité ma question.
Bynens il est ara%C3%A7 trop quand je fais
console.log(url);
OriginalL'auteur Mathias Bynens
En JavaScript utilisation:
pour l'encodage des données, et en Java que vous pouvez faire:
decode
méthode doit être appelée avec le deuxième paramètre spécifiant le jeu de caractères à utiliser.OriginalL'auteur Akhil Thayyil
Pas besoin d'encoder la chaîne sur le javascript côté.
Java ne supporte pas l'unicode afin de décodage doit être fait comme:
output = new String(input.getBytes("ISO-8859-1"), "UTF-8");
OriginalL'auteur Ruchir Bhagat