问题
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
回答1:
Yeah, its the XXI. century and we're still struggling with things like character encoding...
My first guess is that either:
- 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),
- 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)
- your DB encoding might be incorrect (what is the Table encoding, can you check that?)
回答2:
If you are using Eclipse, then
- right click on you project.
- Go to Properties
- Select UTF-8 in "Text File Encoding "

回答3:
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");
回答4:
may be you need to decode your character string to ISO-8859 first and then encode it to UTF-8
来源:https://stackoverflow.com/questions/10933620/display-special-characters-using-system-out-println