vendredi 18 septembre 2009

Echapper une chaine en Unicode en Java

Bonjour,
voici une petite source pour vous aider à convertir une chaine de caractère en son équivalent unicode échappé (par exemple \u0025 pour le caractère pourcent).

J'en ai eu besoin dans un projet où il y avait des problèmes d'encodage : ma chaine en dur dans le code, passait bien sur ma machine, mais lorsque le code était compilé sur une autre machine, les caractères accentués de ma chaine ne passaient pas bien (pb d'encodage de mon fichier) et provoqué des bugs.
Pour éviter tout souci avec les caractères accentués, j'ai remplacé tout mes accents par leur équivalent unicode donc il n'y aura plus de pb à la compilation sur n'importe quel systeme (UNIX ou Windaube par exemple).

Voici la fonction :

public static String escapeUnicode(String s)
{
// utiliser un string builder et non pas une string pour des raisons de
// performances
StringBuilder sb = new StringBuilder(s.length() * 6);

// converti caractere par caractere
for (int i = 0; i < s.length(); i++)
{
// fait la convertion :
// prends le code ascii en hexadécimal sur 4 caracteres (par exemple
// 0025 pour le %)
// et rajoute \\u devant
sb.append(String.format("\\u%04x", (int) s.charAt(i)));
}

// renvoi le résultat
return sb.toString();
}


Un exemple :
la chaine : c'est l'été
donne : \u0063\u0027\u0065\u0073\u0074\u0020\u006c\u0027\u00e9\u0074\u00e9

Aucun commentaire:

Enregistrer un commentaire