Maison  >  Article  >  Java  >  Pourquoi « URLEncoder » encode-t-il les espaces comme « » au lieu de « » ?

Pourquoi « URLEncoder » encode-t-il les espaces comme « » au lieu de « » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-11 16:35:031035parcourir

Why Does `URLEncoder` Encode Spaces as

Différences entre URLEncoder et l'encodage d'URL de formulaire HTML

En essayant d'encoder une chaîne contenant un caractère d'espace à l'aide de java.net.URLEncoder, vous peut remarquer un résultat inattendu. La sortie ne suit pas le format « Hello World » attendu, mais renvoie plutôt « Hello World ». Cela découle de la nuance entre le comportement d'URLEncoder et l'encodage d'URL de formulaire HTML.

L'URLEncoder fonctionne selon la spécification HTML pour l'encodage d'URL dans des formulaires HTML. Conformément à la spécification HTML, les noms et valeurs de contrôle doivent échapper aux caractères d'espace, non pas avec " , " mais avec le symbole " ".

Cependant, votre exigence peut être de coder un caractère d'espace spécifiquement comme " ." Pour y parvenir, une simple opération de remplacement peut être effectuée sur la chaîne encodée :

String encodedString = java.net.URLEncoder.encode("Hello World", "UTF-8");
String correctedString = encodedString.replace("+", "%20");

Cette correction remplace le symbole " " par " ", ce qui donne le format "Hello World" souhaité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn