Pourquoi la chaîne & # 8220; & # 191; & # 8221; être traduit en & # 8220; & # 194; & # 191; & # 8221; lors de l'appel de .getBytes ()
-
05-07-2019 - |
Question
Lors de l'écriture de la chaîne " ¿" en utilisant
System.out.println(new String("¿".getBytes("UTF-8")));
¿ est écrit à la place de ¿.
POURQUOI? Et comment y remédier?
La solution
Vous n'avez pas besoin d'utiliser UTF-16 pour résoudre ce problème:
new String("¿".getBytes("UTF-8"), "UTF-8");
fonctionne très bien. Tant que l'encodage donné à la méthode getBytes ()
est le même que l'encodage que vous transmettez au constructeur String, tout devrait bien se passer!
Autres conseils
Vous devez spécifier le jeu de caractères dans le constructeur String (voir Documents de l'API ).
Essayez:
System.out.println(new String("¿".getBytes("UTF-8"), "UTF-8"));
Vous devez spécifier le codage à la fois lors de la conversion de la chaîne en octets et lors de la reconversion des octets en chaîne.
On dirait que la console système n'est pas en UTF-8
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow