Encoder une chaine de caractère
Pour assurer le maximum de compatibilité, l'encodage d'une url consiste à remplacer tous les caractères non alpha-numériques (hormis -_.) et les espace par des séquences commençant par un caractère pourcentage (%) et de deux chiffres hexadécimaux.
import java.io.UnsupportedEncodingException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Encoder et decoder une url
* http://www.fobec.com/java/918/encoder-decoder-une-url.html
* @author fobec 2010
*/
public class TextEncoder {
public static void main(String[] args) {
try {
String text = "En français: il a des caractères à encoder !!!";
String charset = "UTF-8";
//Encode le texte en UTF-8
System.out.print(java.net.URLEncoder.encode(text, charset));
//résultat: En+français:+il+a+des+caractères+à+encoder+!!!
text = "En+français:+il+a+des+caractères+à+encoder+!!!";
System.out.print(java.net.URLDecoder.decode(text, charset));
//résultat: En français: il a des caractères à encoder !!!
} catch (UnsupportedEncodingException ex) {
Logger.getLogger(TextEncoder.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Java intègre la classe URLEncoder qui contient la fonction encode() pour encoder le String et la classe URLDecoder qui contient la fonction decode() pour décoder le String encodé.
Bref, les deux fonctions sont prêtes à l'emploi dans JAVA, n'hesitez pas à vous en servir pour encoder les URL et eviter les problèmes de charset par exemple.