PDA

View Full Version : [Java]codifica caratteri


idioteque
09-10-2008, 14:23
Salve ragazzi, ho un piccolo problema. ho realizzato un programma in java che legge i dati da un database access e li inserisce in uno mysql. Il problema sta che una tabella sola ha alcuni campi che sono criptati e che quindi leggendoli normalmente hanno dei caratteri particolari. Anticipo subito che i dati nn posso decriptarli ma li devo x forza trasferire così. Quindi il problema sta che quando trasferisco questi dati da un database all'altro, se x esempio nel db access c'è un quadrato, in mysql m spunta un punto interrogativo. Come posso risolvere il problema?

Questa è la funzione che legge il record dal database access


public Vector eseguiQuery(String query) {
Vector v = null;
String [] record;
int colonne = 0;
try {
Statement stmt = db.createStatement(); // Creo lo Statement per l'esecuzione della query
ResultSet rs = stmt.executeQuery(query); // Ottengo il ResultSet dell'esecuzione della query
v = new Vector();
ResultSetMetaData rsmd = rs.getMetaData();
colonne = rsmd.getColumnCount();

while(rs.next()) { // Creo il vettore risultato scorrendo tutto il ResultSet
record = new String[colonne];
for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);
v.add( (String[]) record.clone() );
}
//System.out.println("colonne"+colonne);
rs.close(); // Chiudo il ResultSet
stmt.close(); // Chiudo lo Statement
} catch (Exception e) { e.printStackTrace(); errore = e.getMessage(); }

return v;
}




io credo che il problema sia quando faccio il casting (evidenziato in rosso) come una stringa, anche se in teoria il tipo String nn è già unicode?

idioteque
09-10-2008, 16:01
v posto un'esempio (nn è un mio database,ma uno trovato su internet,ma le stringhe del campo descrizione le ho così pure io). Se vedete nel campo descrizione il primo campo è un quadrato, ma quando lo leggo in java m da "?".

http://www.freemao.com/pics/x.JPG

idioteque
09-10-2008, 21:27
ho notato che se apro il database con access e faccio copia incolla del campo errato che m da (il carattere quadratino che si vede pure nell'immagine precedente) , se lo metto dentro system.out.println() , mi stampa sempre il carattere ? Come mai?