Maison  >  Article  >  Java  >  Introduction détaillée à UrlDecoder et UrlEncoder en Java

Introduction détaillée à UrlDecoder et UrlEncoder en Java

黄舟
黄舟original
2017-07-24 15:35:542207parcourir

Classe utilitaire pour l'encodage au format HTML. Cette classe contient des méthodes statiques pour convertir une chaîne au format MIME application/x-www-form-urlencoded. Ce qui suit vous présentera la connaissance d'UrlDecoder et d'UrlEncoder en Java à travers un exemple de code. Les amis intéressés devraient jeter un œil ensemble

URLEncoder

<.> Classe utilitaire pour l'encodage au format HTML. Cette classe contient des méthodes statiques pour convertir une chaîne au format MIME application/x-www-form-urlencoded. Pour plus d'informations sur l'encodage au format HTML, consultez la spécification HTML.

Lors de l'encodage d'une chaîne, utilisez les règles suivantes :

Les caractères alphanumériques "a" à "z", "A" à "Z" et "0" à "9" restent inchangés.

Les caractères spéciaux ".", "-", "*" et "_" restent inchangés.

Le caractère espace " " est converti en signe plus "+".

Tous les autres caractères ne sont pas sécurisés, ils sont donc d'abord convertis en un ou plusieurs octets à l'aide d'un mécanisme de codage. Chaque octet est ensuite représenté par une chaîne de 3 caractères "%xy", où xy est la représentation hexadécimale à deux chiffres de l'octet. Le schéma de codage recommandé est UTF-8. Cependant, pour des raisons de compatibilité, si aucun encodage n'est spécifié, l'encodage par défaut de la plateforme correspondante est utilisé.


Par exemple, en utilisant le mécanisme d'encodage UTF-8, la chaîne "La chaîne ü@foo-bar" sera convertie en "La+string+%C3%BC%40foo-bar" car dans UTF-8, le caractère ü est codé sur deux octets, C3 (hex) et BC (hex), et le caractère @ est codé sur un octet 40 (hex).

2 URLDecoder

Cette classe contient des méthodes statiques pour décoder la chaîne à partir du format MIME application/x-www-form-urlencoded.

Ce processus de conversion est exactement le contraire du processus utilisé par la classe URLEncoder. On suppose que tous les caractères de la chaîne codée sont l'un des suivants : "a" à "z", "A" à "Z", "0" à "9" et "-", "_", " ." ainsi que"*". Le caractère "%" est autorisé, mais est interprété comme le début d'une séquence d'échappement spéciale.

Les règles suivantes sont utilisées lors de la conversion :

Les caractères alphanumériques "a" à "z", "A" à "Z" et "0" à "9" restent inchangés.

Les caractères spéciaux ".", "-", "*" et "_" restent inchangés.

Le signe plus "+" est converti en caractère espace " ".

traitera la séquence de format "%xy" ​​​​comme un octet, où xy est une représentation hexadécimale à deux chiffres de 8 bits. Ensuite, toutes les sous-chaînes contenant une ou plusieurs de ces séquences d'octets consécutivement sont remplacées par des caractères dont le codage produit ces octets consécutifs. Le mécanisme de codage pour décoder ces caractères peut être spécifié, ou s'il n'est pas spécifié, le mécanisme de codage par défaut de la plateforme est utilisé.

Ce décodeur a deux manières possibles de gérer les chaînes illégales. Une méthode consiste à ignorer le caractère illégal et l'autre méthode consiste à lever une exception IllegalArgumentException

Exemple simple :

Code Java


try { 
      String encodeStr = URLEncoder.encode("中国", "utf-8"); 
      System.out.println("处理后:" + encodeStr); 
      String decodeStr = URLDecoder.decode(encodeStr, "utf-8"); 
      System.out.println("解码:" + decodeStr); 
    } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
    }
Résultat d'exécution :

Code Java


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