FAQ |
Kalender |
2009-04-20, 20:51 | #1 | ||
|
|||
Flitig postare
|
Ett väldigt gammalt problem har dykt upp - encodings över JDBC.
Jag har en defaultinstallerad MySQL som har alla sina charsets defaultade på latin1 (iso-8859-1). Detta verifierar jag genom en show status, som också visar att klienten (vanliga mysql-client) och dess connection kör latin1. Rubbet i latin1 alltså. Jag sätter in åäö i en tabell via klienten, allt ser bra ut via den. Jag gör en select från Java genom nyaste JDBC-drivern. Connectionsträngen är jdbc:mysql://localhost:3306/databas, alltså inga encoding-inställningar. Jag tar ut ResultSet.getBytes() för strängen ovan och skriver ut följande: new String(bytes, "UTF-8")); new String(bytes, "ISO-8859-1")); new String(bytes) Alla tre varianter ger felaktig encoding. Jag har även testat att ange UTF-8 samt ISO8859_1 på connectionsträngen, vilket ger lite varierande, men alltid felaktiga resultat. Databasen och klienten som insättningen sker i är alltså rakt igenom i latin1, så det är något på Javasidan som jag missat. Några tips? |
||
Svara med citat |
2009-04-20, 20:59 | #2 | ||
|
|||
Flitig postare
|
Man behöver bara skriva ner problemet så löste det sig förstås... det var terminalen som insättningen skedde via som var inställd i UTF-8, så det blev ISO-omlindad UTF-8 i databasen, som sedan plockades ut till Unicode i Java...
Död åt encodings! |
||
Svara med citat |
Svara |
|
|