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.

Était-ce utile?

La solution

Vous devez modifier les paramètres régionaux avant de lancer la machine virtuelle Java; voir:

Java, ID de bogue 4163515

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top