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.
Voici un exemple de code :La sortie donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } } } }Comment faire pour résoudre ce problème ?test 1 : é
test 2 : è
test 3 : Ã
J'avoue être un peu perdu.
Merci d'avance.
Partager