2010-06-02 5 views
2

J'ai un queryString que je passe à la méthode doGet() d'un servlet qui ressemble à ceci:caractère # semble causer des problèmes avec une requête get

count = 9 & preId0 = -99 & objId0 = - 99 & preId1 = -99 & objId1 = -99 & preId2 = 69 & objId2 = 16 #! 78 & preId3 = -99 & objId3 = -99 & preId4 = -99 & objId4 = -99 & preId5 = -99 & objId5 = -99 & preId6 = -99 & objId6 = -99 & preId7 = -99 & objId7 = -99 & preId8 = -99 & objId8 = -99

Après INCLUSIVEMENT # tout est nul, donc je suppose le # a une signification particulière . Est-ce vrai? et y a-t-il d'autres personnages de ce genre qui le feront?

Répondre

4

Oui, le # indique un hachage. Ceci est utilisé, par exemple, pour sauter aux balises d'ancrage dans une page. Chaque fois que vous mettez des données dans une URL, vous devez encoder l'URL. En JavaScript, vous pouvez utiliser encodeURIComponent(). Dans d'autres langues, vous devrez rechercher la documentation.

2

Le # indique la partie d'ancrage de l'URL, qui est utilisée pour identifier une position spécifique dans le document renvoyé par le reste de l'URL. Il est techniquement connu comme le Fragment portion of the URI.

Tout ce qui suit le # en fait partie. Puisqu'il n'est pertinent que lorsque le document est retourné et traité (encore une fois, il représente une position dans ce document), il est seulement intéressant pour le client. Il n'a aucune signification ou valeur pour le serveur et le client traitera la valeur entière comme une seule valeur (à moins bien sûr que vous fournissiez du code personnalisé supplémentaire pour séparer la valeur et en extraire une signification supplémentaire).

Si vous devez passer le caractère # dans le cadre d'une valeur dans l'URL, remplacez-le par %23 - vous pouvez le faire en utilisant programme URL Encoding, qui remplacera tous les caractères « spéciaux » avec ceux qui sont acceptables pour le transport par URI.

2

En règle générale, c'est une bonne idée d'URLENCODE vos paramètres de chaîne de requête avant de les envoyer au serveur. Le # dans l'url est utilisé pour représenter l'ancre à laquelle vous êtes actuellement et causera des problèmes en essayant de l'envoyer au serveur.

Plus d'informations sur le codage URL peut être trouvée ici: http://www.w3schools.com/tags/ref_urlencode.asp

2

"#" est un caractère spécial. Il fait référence au hachage généralement utilisé dans les ancres de page. Vous pouvez simplement encoder ce caractère% 23 dans l'URL et cela permettra d'éliminer le problème. D'autres personnages significatifs sont? [espace] &

Questions connexes