Display special characters using System.out.println

48.8k views Asked by At

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

4

There are 4 answers

1
rlegendi On BEST ANSWER

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?)
0
Burhan ARAS On

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

2
Santosh On

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");
1
wyk On

may be you need to decode your character string to ISO-8859 first and then encode it to UTF-8