Modification du codage par défaut pour String (byte [])
Question
Existe-t-il un moyen de modifier le codage utilisé par le constructeur String (byte [])?
Dans mon propre code, j'utilise String (byte [], String) pour spécifier l'encodage, mais j'utilise une bibliothèque externe que je ne peux pas modifier.
String src = "with accents: é à";
byte[] bytes = src.getBytes("UTF-8");
System.out.println("UTF-8 decoded: "+new String(bytes,"UTF-8"));
System.out.println("Default decoded: "+new String(bytes));
Le résultat est:
UTF-8 decoded: with accents: é à Default decoded: with accents: é Ã
J'ai essayé de modifier la propriété système file.encoding
mais cela ne fonctionne pas.
La solution
Vous devez modifier les paramètres régionaux avant de lancer la machine virtuelle Java; voir:
Certains endroits semblent impliquer que vous pouvez le faire en définissant la variable file.encoding lors du lancement de la machine virtuelle, comme
.java -Dfile.encoding=UTF-8 ...
... mais je n'ai pas essayé moi-même. Le moyen le plus sûr consiste à définir une variable d'environnement dans le système d'exploitation.
Autres conseils
Cité de defaultCharset ()
Le jeu de caractères par défaut est déterminé lors du démarrage de la machine virtuelle et dépend généralement de la région et jeu de caractères du fonctionnement sous-jacent système.
Dans la plupart des systèmes d'exploitation, vous pouvez définir le jeu de caractères à l'aide d'une variable d'environnement.
Je pense que vous voulez ceci: System.setProperty ("file.encoding", "UTF-8");
Cela a résolu certains problèmes, mais j'en ai encore un autre. Les caractères " & # 237; " et " & # 205; " ne convertit pas correctement si le SO est ISO-8859-1. Juste avec l'option JVM au démarrage, je le résous. Désormais, seule ma console Java dans l'EDI NetBeans se bloque lors de l'affichage de caractères spéciaux.