Aggiornamento:
provando e riprovando ho sostituito temporaneamente una JtextArea con una JtextField....è tutto ok con essa.
Quindi deduco che il problema sia proprio sul componente.
Ogni aiuto è ben accetto !
Alex
Aggiornamento:
provando e riprovando ho sostituito temporaneamente una JtextArea con una JtextField....è tutto ok con essa.
Quindi deduco che il problema sia proprio sul componente.
Ogni aiuto è ben accetto !
Alex
Non credo .... perlomeno mi sembrerebbe molto strano (però bisognerebbe vedere come hai usato JTextArea). Le problematiche sui charset in generale sono un po' spinose e possono capitare anche per via di errori "subdoli" e magari a più livelli.
Visto che il programma è tuo ... debuggalo! Cioè verifica cosa contengono le stringhe. La "è" per essere corretta nella stringa Java DEVE essere un char di codice 232 (0x00E8 cioè esadecimale). Quel simbolo con ? che hai mostrato come è codificato nella stringa Java? Già da questo si potrebbe forse capire cosa è successo.
Inoltre, prova a leggere qui: 5.4 Using Character Sets and Unicode
è la documentazione ufficiale del Connector/J che spiega in generale l'uso dei charset.
Prova anche a fare "a mano" una SELECT sul quel campo usando la funzione ORD() di MySQL che ti fornisce il codice del primo carattere della stringa. Fai chiaramente in modo che il carattere incriminato sia appunto il primo.
Ultima modifica di andbin; 01-10-2016 a 11:07
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Allora....sto debuggando il programma....ho capito che il problema è nella tipologia di dati della colonna che ospita il dato e cioè BLOB. Ho cercato di ovviare inserendo questa modifica:
dato che la table ha come encoding UTF8-Default collationcodice:byte[] domande = res.getString("Domanda").getBytes(); String s = new String( domande, "UTF-8");
Mysql non lo conosco benissimo...comunque ora provo a fare un SELECT sul campo come dici tu
Intanto grazie
Alex
Ultima modifica di magobin; 01-10-2016 a 15:24 Motivo: errori di ortografia
Ahhh dovevi dirlo prima che è un BLOB ! il BLOB contiene un flusso "crudo" di byte. Il DB non "sa" nulla di che cosa rappresenta o contiene quella colonna. Se per te contiene del "testo" allora spetta a TE effettuare le conversioni da String a byte[] e viceversa in maniera fissa, uniforme e coerente.
No! getBytes() di String (quello così, senza argomenti) usa il charset di default della piattaforma su cui sta girando la applicazione Java. Quindi NON va bene.
Usa sempre UTF-8 per queste conversioni.
Non ha nulla che fare con i BLOB. I BLOB non hanno un "encoding" di per sé. Quello che contengono lo devi sapere tu e trattare in modo adeguato, non lo sa il DB.
Non serve più di tanto, ora che sappiamo che è un BLOB. Il problema è sicuramente dovuto a tue conversioni inappropriate.
P.S.: e tra l'altro, se è un BLOB, allora non dovresti usare setString di PreparedStatement né getString del ResultSet.
P.S. 2: se è solo testo (potenzialmente molto lungo), perché non un CLOB (Character Large OBject)? Che in MySQL si chiamano tecnicamente TINYTEXT, TEXT, ecc....
Ultima modifica di andbin; 01-10-2016 a 16:15
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
HO risolto....avevo gi� provato ad usare come container LONGTEXT ma, come detto, non conosco molto bene Mysql, quindi cambiavo la tipologia della colonna ma non la collation...ho riprovato ora ad usare LongText cambiando la collection e funziona il tutto.
Grazie ancora per l'input !!!
Alex