java.util.Properties et CP1250
-
20-09-2019 - |
Question
Puis-je utiliser java.util.Properties avec codage différent par défaut alors?
La solution
Non, sauf si vous
- sont en cours d'exécution Java 6 ou version ultérieure
- contrôler le code chargement du fichier de propriétés, et peut utiliser un lecteur. Voir la javadoc .
Ceci est un défaut assez ennuyeux dans les spécifications. Il existe plusieurs solutions de contournement, sans doute le plus simple étant de générer automatiquement un fichier .properties conforme échappé unicode-à partir d'un encodage approprié (CP1250, utf-8, quelle que soit) la source.
Java livré avec un transcodeur appelé native2ascii pour le faire pour vous:
Il y a quelques RFE ans sur ce sujet:
Autres conseils
Oui, mais vous devez être prudent d'utiliser le load()
et les méthodes de store()
qui prennent un Reader
/ Writer
et de construire explicitement ceux en utilisant un InputStreamReader/OutputStreamWriter
avec le codage correct.
Cela peut ne pas être possible avec les bibliothèques qui utilisent les propriétés fichiers implicitement.
Modifier. Les méthodes décrites ci-dessus n'ont été introduites en Java 1.6 - pour les anciennes versions, vous êtes hors de la chance, comme dsadinoff a écrit
Si votre fichier de propriétés est disponible au moment de la construction, vous pouvez également le convertir dans votre script ant en utilisant la tâche native2ascii:
<property name="javac.source.encoding" value="Cp1250"/>
<native2ascii src="${src.dir}" dest="${classes.dir}"
encoding="${javac.source.encoding}"
includes="**/*.properties"/>