Pourquoi la chaîne & # 8220; & # 191; & # 8221; être traduit en & # 8220; & # 194; & # 191; & # 8221; lors de l'appel de .getBytes ()

StackOverflow https://stackoverflow.com/questions/176084

  •  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?

Était-ce utile?

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
scroll top