ich habe eine Datenbank mit der Kodierung SQL_ASCII und versuche diese über Java mit JDBC ein u auszulesen. Allerdings kriege ich bei Sonderzeichen wie Umalute Probleme und kann die nicht korrekt darstellen. Wie umgehe ich in Java dieses Problem?
Hab ich versucht… aber das Problem ist immer noch das gleiche. Kann man das encoding direkt im Java Code einbetten? Hab das client_encoding direkt im SQL eingesetzt.
test=# show client_encoding;
client_encoding
-----------------
LATIN1
(1 row)
test=*# set client_encoding='utf8';
SET
test=*# show client_encoding;
client_encoding
-----------------
utf8
(1 row)
Die Daten sind vom GEO Format Shape in die Datenbank importiert. Diese Daten sollen ausgelesen und dabei bekomme ich nich die richtigen Zeichen. Die Datenbank ist auf SQLASCII konfiguriert.
Da SQL_ASCII die Daten nicht verändert, bist du dir sicher, dass die Daten beim Import schon das gleiche Format hatten wie jenes, dass du für die Ausgabe benötigst?
Wenn deine Webseite per Default (xhtml) UTF8 darstellt, musst du die Zeichen schon derart passend in die Datenbank schreiben, damit die wieder richtig ausgelesen und angezeigt werden.
Alson ich mache schon mal gar nichts mit web anwendung, dass ganze scheitert schon direkt am recordset in der java logik (per sysout und debugger getestet).
Die Shape Daten müssen mit SQL ASCII importiert werden und werden sonst auch nicht verändert, sondern nur gelesen.
Da ja das mit dem Set nicht geklappt hat… wäre meine Frage, ob man beim Auslesen vom recordset den string einfach in den korrekten Zeichensatz konvertieren kann. In Perl ist das möglich, nur bei Java hab ich dafür keine Möglichkeit gefunden. Da ja das Problem nicht auf Datenbankseite liegt weiß ich auch sonst nicht weiter.
Wenn ich in Java den Parameter für den client_encoding verändern will, bringt er mir immer die Meldung, dass der JDBC Treiber für ein korrektes Funktionieren die Einstellung UNICODE benötigt. Alles andere verweigert er mir und mit UNICODE gibt er mir nich die richtigen Zeichen aus.
Nun, da hätten wir das Problem ja schon mal eingegrenzt.
Kannst du das Encoding der DB auf UTF8 ändern und das noch mal probieren?
Wie schreibst du die Daten noch mal in die DB, auch mit Java und den gleichen Settings?