Changer l'encoding d'un fichier en Java

Dans ITIM, les fichiers de libellés sont gérés dans des fichiers properties, qui sont lus par l'application java.

Pour les libellés en anglais, pas de problème, mais lorsqu'on veut ajouter des libellés avec des caractères accentués ou des caractères cyrilliques, il faut encoder tout ceci en ISO8859,car dans JDK 1.5, les fichiers *.properties doivent être encodé en ISO-8859-1. De ce fait, un caractère "é" doit être encodé comme "\u00e9". Pas très pratique à l'usage.

Heureusement, il y a un utilitaire java fourni avec le jdk 1.5 qui permet de convertir un fichier natif en ASCII : native2ascii. Son fonctionnement est simple :

native2ascii -encoding  fichier.origine fichier.ascii

Par exemple, j'ai un fichier labels.utf8 encodé en UTF8, dont le contenu est :

badgeid=Numéro de badge
arrivaldate=Date d'arrivée
leavingdate=Date de départ
createdby=Créateur de l'entrée
creationdate=Date de création

Pour le convertir en ASCII, on lance la commande :

native2ascii -encoding utf8 labels.utf8 labels.properties

Le fichier labels.properties est alors converti en iso8859-1 :

badgeid=Num\u00e9ro de badge
arrivaldate=Date d'arriv\u00e9e
leavingdate=Date de d\u00e9part
createdby=Cr\u00e9ateur de l'entr\u00e9e
creationdate=Date de cr\u00e9ation

Vérification avec la commande file sous linux :

$ file labels*
labels.properties: ASCII text
labels.utf8:       UTF-8 Unicode text

Dès lors, le fichier properties peut être utilisé dans une application java.
Dans le cas du logiciel ITIM (IBM Tivoli Identity Manager), c'est particulièrement intéressant pour convertir les libellés, que l'on trouve dans $ITIM_HOME/data/CustomLabels.properties.

Catégorie