2009-06-24 7 views
1

Nous implémentons i18n en utilisant JSTL et rencontrons un problème que les textes de ressources définis dans le fichier .properties et ayant des caractères non ISO 8859 (par exemple les langues inidiques) ne peuvent pas être rendus par tag. Après avoir plongé dans le code de la balise et dans la classe BundleHelper, nous avons finalement constaté qu'il utilisait en interne la méthode ResourceBundle.getBundle qui à son tour utilise PropertyResourceBundle pour charger le fichier .properties en tant que groupe de ressources.Fichiers de ressources pour les langues autres que ISO 8859

Il repose en interne sur la méthode java.util.Properties # load (InputStream) qui ne prend pas en charge la lecture de caractères non ISO 8859 et la seule solution consiste à représenter ces caractères au format hexadécimal hexadécimal hexadécimal, ce qui est tout à fait irréaliste dans le cas où le fichier .properties entier est pour la langue hindi!

Y a-t-il des solutions pour cela? J'ai essayé d'utiliser le format XML dans le fichier .properties mais il n'a pas été reconnu par PropertyResourceBundle!

détails Environnement sont: JDK 1.5, Weblogic 9,2

+0

Avez-vous essayé d'utiliser UTF-8? –

Répondre

1

-vous absolument ont utiliser JDK 1.5? Si vous pouviez aller jusqu'à 1.6, vous pourriez utiliser la surcharge load(Reader) qui vous permettrait de stocker les fichiers dans d'autres encodages (par exemple UTF-8). Je ne suis pas sûr de savoir comment cela cadrerait avec PropertyResourceBundle, certes.

N'oubliez pas que même en travaillant avec des fichiers ISO-8859-1, vous n'avez pas besoin d'utiliser ce format pour éditez le fichier. Vous pouvez utiliser native2ascii pour convertir un fichier à partir d'un codage différent. Conservez vos fichiers de propriétés "source" au format UTF-8, puis exécutez native2ascii dans le cadre de votre build. Par exemple:

native2ascii -encoding UTF-8 Foo.properties.utf8 Foo.properties 
0

Écrivez vos fichiers quel que soit le codage que vous aimez et de les exécuter à travers l'outil native2ascii (qui vient avec le JDK exactement à cet effet) dans le cadre du processus de construction ou de déploiement.

Questions connexes