J'ai une application web (bien, en fait est juste un servlet) qui reçoit des données de 3 sources différentes:Servlet recevant des données à la fois dans ISO-8859-1 et UTF-8. Comment URL-décoder?
- Source A est un document HTML écrit en UTF-8, et envoie les données via
<form method="get">
. La source B est écrite en ISO-8859-1 et envoie également les données via<form method="get">
. La source C est écrite en ISO-8859-1 et envoie les données via<a href="http://my-servlet-url?param=value¶m2=value2&etc">
.
La servlet reçoit les paramètres de requête et les décode en utilisant UTF-8. Comme vous pouvez vous y attendre, A fonctionne sans problèmes, tandis que B et C échouent (vous ne pouvez pas décoder l'URL en UTF-8 quelque chose qui est codé en ISO-8859-1 ...).
Je peux apporter de légères modifications à B et C, mais je ne suis pas autorisé à les changer d'ISO-8859-1 à UTF-8, ce qui résoudrait tous les problèmes. En B, j'ai pu résoudre le problème en ajoutant accept-charset="UTF-8"
au <form>
Il envoie donc les données en UTF-8 même si la page est ISO.
Que puis-je faire pour réparer C?
Sinon, est-il possible de déterminer le jeu de caractères sur le servlet, afin que je puisse appeler URL-decode avec le bon codage dans chaque cas?
Modifier: Je viens de trouver this, qui semble résoudre mon problème. Je dois encore faire quelques tests afin de déterminer si cela influe sur la performance, mais je pense que je m'en tiendrai à cette solution.
Que diriez-vous de ' '? – zildjohn01
Hmmm .. Je préférerais ne pas ajouter plus de paramètres à la demande ... mais je suppose que ça devrait marcher. Je vais l'essayer. Merci! :) – AJPerez
Dans cette approche, je pense que la page de recherche principale de Google inclut (ou inclus) un paramètre "ie" ... Trop paresseux pour le tester maintenant http://www.seomoz.org/ugc/the-ultimate-guide -to-the-google-search-parameters – leonbloy