PDA

View Full Version : Convert special characters in java from mysql


Oakendin
06-29-2006, 11:10 PM
I am trying to convert some special characters stored in a MySql DB for display in Java.

Among the things I would like to convert are "á»…" to "ễ", "ç" to "ç", "ü" to "ü", etc.

My jdbc connection is "jdbc:mysql://DBL_URL/NAME?requireSSL=false&useUnicode=true&characterEncoding=UTF-8"

I'v tried with no luck:
byte[] stringBytes = dbString.getBytes();
String str = new String(stringBytes , "UTF-8");

A SHOW VARIABLES LIKE 'character_set%'; in mySql produces this:
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir C:\Program Files\MySQL\MySQL Server 4.1\share\charsets/

Anyhelp would be greatly appreciated.

Oakendin
07-12-2006, 11:48 PM
According to this website, latin1 is this charset: ISO-8859-1
http://java.sun.com/j2se/1.4.2/docs/guide/intl/encoding.doc.html

And my charset for my MySql DB is character_set_database latin1.

So. Whatever I did to make it UTF-8 didn't work. It was still latin1 coming out. Basically, characterEncoding=UTF-8 and String str = new String(stringBytes , "UTF-8"); didn't work.

So, I finally assumed that it was latin1 coming back all the time. Here's the code that converts it to UTF-8:

private String convertStringFromLatin1ToUTF8(String stringForconversion) {
try {
String stringToConvert = stringForconversion;
byte[] convertStringToByte = stringToConvert.getBytes("ISO-8859-1");
return new String(convertStringToByte, "UTF-8");
} catch (UnsupportedEncodingException e) {
System.out.println"convert String FAILED: " + stringForconversion + "<br/>");
return stringForconversion;
}
}