Bonjour,
J'ai des données dans ma base de données en langue étrangère, je souhaite les afficher dans un JLabel, mais ce dernier m'affiche des points d'interrogation.
Merci
Bonjour,
J'ai des données dans ma base de données en langue étrangère, je souhaite les afficher dans un JLabel, mais ce dernier m'affiche des points d'interrogation.
Merci
Salut,
jeter un oeil sur la FAQ:
Comment changer la langue de mon appllication et toutes les conversions qui vont avec ?
Comment changer la langue d'un JComponent sans changer la langue de tout le programme ?
Exemple:
Utilisation de la langue arabe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Locale.setDefault(new Locale ("ar", ""));
Ma Chaine youtube : https://www.youtube.com/@medBkDev
Mes Articles
guide du débutant pour apprendre à programmer en Java -
FAQ Java et les cours et tutoriels Java
Merci, j'ai rajouté cette ligne dans mon programme, mais il ne fonctionne toujours pas, mon JLabel m'affiche des points d'interrogations.
Quelle est la langue utilisée ?
Es-tu certain que les chaines ne sont pas corrompues dans la base de données ?
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
En ce qui concerne la langue, c'est l'arabe.
Par contre je ne pense pas que ça vient de la base de données parce que c'est une base de données Access. Et avec Access, elle s'affiche correctement.
En général, si t'as des ? C'est qu'il y a eu un problèe de conversion:
-> soit quand on a sauvé dans la base de données
-> soit quand on a transféré de la base de données vers java;
Donc les question sont les suivantes:
Quel est l'encodage utilisé par la base de donnée
Quel est l'encodage utilisé par le driver pour communiquer avec la base de donnée.
Le fait que ce soit encodé avec access ne veux pas dire que c'est correct dans la DBCa peux aussi vouloir dire, dans certains cas, que l'erreur de choix d'encodage à l'écriture et inversé par la même erreur à la lecture.
Pour l'encodage utilisé par le driver est normalement l'UTF-8,
Voici mon code de connexion ci-dessus, à vérifier :
Par contre en ce qui concerne la base de données Access, je ne sais pas comment faire pour connaitre son encodage.
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 private Connection con = null; private static final String accessDBURLPrefix = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="; private static final String accessDBURLSuffix = ";DriverID=22;READONLY=true}"; Statement statement = null; public CTables( String filename ) { try { /********************************* ** connexion sous windows ** *********************************/ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); filename = filename.replace('\\', '/').trim(); String databaseURL = accessDBURLPrefix + filename + accessDBURLSuffix; // System.err.println("Datebase URL: " + databaseURL); Properties prop = new Properties(); prop.put("characterEncoding", "UTF-8"); con = DriverManager.getConnection(databaseURL, prop); //System.out.println( "Connexion avec la base " + arg[ 1 ] + " tablie" ); /* */ } catch( Exception e ) { System.err.println( "[CTables:CTables()[ " + filename + " ]] Erreur: " + e ); } } // CTables
Une question à propos de la base de données Access, Comment je peux faire pour savoir l'encodage de caractères d'Access ?
Merci
Tu peux oublier access.
Le brifge ODBC/JDBC ne supporte pas l'encodage UTF-16 qui est utilisé par Access.
cf http://bugs.sun.com/bugdatabase/view...bug_id=6345277
De toute façon, utiliser access avec java c'est un peu contre nature, en effet pourquoi utiliser un SGBD qui est disponible sur un seul OS alors que java permet l'exécution sur de multiple environnements.
Merci de la réponse, en ce qui concerne l'utilisation d'Access, je suis 100% d'accord, mais la j'y étais contraint.
Partager