Ogniqualvolta un database cambia un carattere in ?
, significa semplicemente che il codice punto del carattere in questione è completamente fuori dall'intervallo per la codifica dei caratteri quando la tabella è configurata per l'uso.
quanto riguarda la causa del problema: il ç
si trova all'interno ISO-8859-1 gamma e ha esattamente lo stesso valore di codice come nella UTF-8 (U+00E7). Tuttavia, il punto di riferimento UTF-8 di ş
si trova completamente al di fuori dell'intervallo ISO-8859-1 (U+015F mentre ISO-8859-1 passa solo a U + 00FF). Il DB non manterrà il carattere e lo sostituirà con ?
.
Quindi, ho il sospetto che la tabella DB sia ancora configurata per utilizzare ISO-8859-1 (o in una delle altre codifiche ISO-8859 compatibili dove ç
ha lo stesso codice come in UTF-8).
L'API Java/JDBC sta svolgendo perfettamente il proprio lavoro per quanto riguarda la codifica dei caratteri (Java usa Unicode fino in fondo) e anche la codifica della connessione DB JDBC è configurata correttamente. Se Java/JDBC avrebbe erroneamente usate ISO-8859-1, allora il risultato sarebbe stato persistente Åakça
(la ş
esistono dei byte 0xC5
e 0x9F
che rappresenta Å
e a
in ISO-8859-1 e la ç
esistono dei byte e 0xC3
0xA7
che rappresenta Ã
e §
in ISO-8859-1).
Che database stai utilizzando?Ed è configurato per accettare Unicode (o qualunque cosa tu abbia bisogno di şakça) in quella colonna? – Thilo