[derby] Problème d'encodage
Salut à tous,
J'essaye actuellement la base de donnée derby (en embarqué) et je me retrouve avec un problème que je n'arrive pas à résoudre.
Lorsque j'insère du texte avec des accents dans la base, je me retrouve avec des "é" and co.
Cela ressemble fort à un problème d'encodage, cependant je ne comprends pas d'où il vient. On dirai que "l'insert" et le "select" ne se font pas avec le même encodage 8O.
Voici un exemple de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| public class Test {
public Test() {
}
public static void main(String ...args) {
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
Connection connection = DriverManager.getConnection("jdbc:derby:bdtest;create=true");
try {
String query = "CREATE TABLE test ( label VARCHAR(100) NOT NULL )";
Test.executeUpdate(connection, query);
query = "INSERT INTO test (label) VALUES ('test 1 : é')";
Test.executeUpdate(connection, query);
query = "INSERT INTO test (label) VALUES ('test 2 : è')";
Test.executeUpdate(connection, query);
query = "INSERT INTO test (label) VALUES ('test 3 : à')";
Test.executeUpdate(connection, query);
query = "SELECT label FROM test";
List<Object[]> rows = Test.executeQuery(connection, query);
for(Object[] row : rows) {
System.out.println(row[0]);
}
} finally {
connection.close();
}
} catch(Exception e) {
e.printStackTrace();
}
}
public static List<Object[]> executeQuery(Connection connection, String pQuery)
throws Exception {
Statement stmt = null;
ResultSet rSet = null;
try {
stmt = connection.createStatement();
rSet = stmt.executeQuery(pQuery);
ResultSetMetaData rsmd = rSet.getMetaData();
int columnCount = rsmd.getColumnCount();
List<Object[]> rList = new ArrayList<Object[]>();
while(rSet.next()) {
Object[] tmp = new Object[columnCount];
for(int i = 0;i < columnCount;i++) {
tmp[i] = rSet.getObject(i + 1);
}
rList.add(tmp);
}
return rList;
} finally {
if(rSet != null) {
rSet.close();
}
if(stmt != null) {
stmt.close();
}
}
}
public static int executeUpdate(Connection connection, String query)
throws Exception {
Statement stmt = null;
try {
stmt = connection.createStatement();
int rLineCount = stmt.executeUpdate(query);
return rLineCount;
} finally {
if(stmt != null) {
stmt.close();
}
}
}
} |
La sortie donne :
Citation:
test 1 : é
test 2 : è
test 3 : Ã
Comment faire pour résoudre ce problème ?
J'avoue être un peu perdu :(.
Merci d'avance.