Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Display special characters using System.out.println

I'm having trouble sending or displaying text with special characters from my webservice to my database. On my eclipse I have set the character encoding to UTF-8 but it still doesn't let me display the characters. For example a simple print like the code below

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

OR

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

The result on the console and if I send this to my database is ??????. How do I get this to display correctly on the console and hopefully in the database

like image 531
Amanni Avatar asked Jun 07 '12 14:06

Amanni


3 Answers

If you are using Eclipse, then

  1. right click on you project.
  2. Go to Properties
  3. Select UTF-8 in "Text File Encoding "

enter image description here

like image 58
Burhan ARAS Avatar answered Sep 19 '22 12:09

Burhan ARAS


See if this works.

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

For storing in DB, use following to explicitly encode the string in UTF-8

String newString = new String(test.getBytes(), "UTF8");
like image 27
Santosh Avatar answered Sep 23 '22 12:09

Santosh


Yeah, its the XXI. century and we're still struggling with things like character encoding...

My first guess is that either:

  1. your source file encoding might be wrong (do you use build tools like Maven? It might be needed to set the source-encoding there too),
  2. your console encoding might be wrong (are you under Windows? The default command line console is not UTF by default, its local-dependant, but with a small play in the registry you can set its encoding)
  3. your DB encoding might be incorrect (what is the Table encoding, can you check that?)
like image 35
rlegendi Avatar answered Sep 20 '22 12:09

rlegendi