web-dev-qa-db-fra.com

Afficher les caractères spéciaux à l'aide de System.out.println

Je ne parviens pas à envoyer ou à afficher du texte contenant des caractères spéciaux de mon service Web vers ma base de données. Sur mon Eclipse, j'ai défini le codage de caractères sur UTF-8 mais cela ne me permet toujours pas d'afficher les caractères. Par exemple, une simple impression comme celle ci-dessous

String test ="привет"; 
System.out.println(test);

OR

String test ="привет";
String query = "insert into communication (`test`) VALUES ('"+ test +"');
PreparedStatement preparedStmt1 = con.prepareStatement(query);
preparedStmt1.executeUpdate();

Le résultat sur la console et si j'envoie ceci à ma base de données est ??????. Comment puis-je obtenir ceci pour afficher correctement sur la console et, espérons-le, dans la base de données 

13
Amanni

Oui, c'est le XXI. siècle et nous sommes toujours aux prises avec des choses comme le codage de caractères ...

Ma première hypothèse est que soit:

  1. le codage de votre fichier source est peut-être incorrect (utilisez-vous des outils de compilation tels que Maven? Il peut être nécessaire de définir le codage source également),
  2. le codage de votre console est peut-être incorrect (êtes-vous sous Windows? La console de ligne de commande par défaut n'est pas UTF par défaut, elle dépend du local, mais vous pouvez définir son codage avec un petit jeu dans le registre)
  3. votre codage de base de données peut être incorrect (qu'est-ce que le codage de table, pouvez-vous vérifier cela?)
1
rlegendi

Si vous utilisez Eclipse, alors 

  1. clic droit sur votre projet. 
  2. Aller aux propriétés
  3. Sélectionnez UTF-8 dans "Codage de fichier texte "

enter image description here

12
Burhan ARAS

Voir si cela fonctionne.

    PrintStream out = new PrintStream(System.out, true, "UTF-8");
    out.println(test);

Pour stocker dans la base de données, utilisez ce qui suit pour coder explicitement la chaîne en UTF-8

String newString = new String(test.getBytes(), "UTF8");
9
Santosh

vous devrez peut-être décoder d'abord votre chaîne de caractères au format ISO-8859, puis l'encoder en UTF-8 

0
wyk