PDA

View Full Version : Unicode-Problem



KM
03-12-04, 12:09
Hallo zusammen,
ich habe eine Excel-Tabelle mit kyrillischen Texten, die ich mit Java mittels der JDBC-ODBC Bridge von Sun auslese. Diese Texte will ich mit dem Microsoft JDBC-Treiber in eine Datenbank auf einem Microsoft-SQL-Server schreiben. Mit Latin-1 Texten funktioniert das auch wunderbar. Nur die kyrillischen Texte werden in lauter Fragezeichen konvertiert. Ich vermute mal es liegt an der JDBC-ODBC Bridge. Ist diese überhaupt Unicode-fähig bzw. was muß man einstellen, damit die Unicode-Zeichen korrekt übertragen werden ?

Danke,
KM

BenderD
03-12-04, 12:27
Hallo KM,

ich habe da so meine Zweifel, dass du die Daten korrekt aus dem Excel rauskriegst; ich würde das mal in ein Schrecksel Forum posten; ob das überhaupt auf diesem Weg geht.
Anderer Ansatz wären vielleicht noch die Open Office APIs, da sehe ich eigentlich mehr Chancen.

mfg

Dieter Bender



Hallo zusammen,
ich habe eine Excel-Tabelle mit kyrillischen Texten, die ich mit Java mittels der JDBC-ODBC Bridge von Sun auslese. Diese Texte will ich mit dem Microsoft JDBC-Treiber in eine Datenbank auf einem Microsoft-SQL-Server schreiben. Mit Latin-1 Texten funktioniert das auch wunderbar. Nur die kyrillischen Texte werden in lauter Fragezeichen konvertiert. Ich vermute mal es liegt an der JDBC-ODBC Bridge. Ist diese überhaupt Unicode-fähig bzw. was muß man einstellen, damit die Unicode-Zeichen korrekt übertragen werden ?

Danke,
KM

KM
03-12-04, 15:08
Also irgendwie verstehe ich das nicht. Jetzt habe ich mal (unabhängig von Excel) versucht das Unicode-Zeichen \u00F8 per String in die SQL-Datenbank zu schreiben. Das hat auch funktioniert. Jetzt steht ein ö in diesem Feld. Wenn ich aber \u0416 reinschreibe (was eigentlich ein kyrillisches Zeichen sein soll), wird daraus wieder ein Fragezeichen. Habe ich irgendwas übersehen oder warum kann ich per Java keine kyrillischen Zeichen in die SQL-Datenbank schreiben ?

Gruß,
KM

BenderD
03-12-04, 17:13
Hallo,

wenn das Schreiben von Unicode in die Sequel Server Datenbank zu einem ö in der Anzeige führt, kann das Schreiben von \u0416 nur zu einem Fragezeichen führen, wenn das kyrillisch ist. Wenn du in der Anzeige ein ö siehst, ist das auf dem Weg vom schreiben bis zur Anzeige irgendwo in einen Zeichensatz konvertiert worden, der ein ö hat und da deine Anzeige keinen Unicode kann, kann das nicht kyrillisch sein; also bleibt der armen Anzeige nur ein Fragezeichen, wenn was kyrillisches kommt.
Hat denn deine Tabelle im Sequel Server Unicode? sonst wird da schon konvertiert. Was siehst du denn im Excel, wenn du dir den kyrillix anschaust?

mfg

Dieter Bender



Also irgendwie verstehe ich das nicht. Jetzt habe ich mal (unabhängig von Excel) versucht das Unicode-Zeichen \u00F8 per String in die SQL-Datenbank zu schreiben. Das hat auch funktioniert. Jetzt steht ein ö in diesem Feld. Wenn ich aber \u0416 reinschreibe (was eigentlich ein kyrillisches Zeichen sein soll), wird daraus wieder ein Fragezeichen. Habe ich irgendwas übersehen oder warum kann ich per Java keine kyrillischen Zeichen in die SQL-Datenbank schreiben ?

Gruß,
KM

KM
06-12-04, 07:26
Habe jetzt herausgefunden, dass das Problem aus 2 Teilen besteht. Zum einen hat unser SQL-Server-Administrator die Datenbankfelder tatsächlich nicht als Unicode-fähig definiert, obwohl ich es ihm gesagt hatte. Zum anderen ist die JDBC-ODBC-Bridge von Sun auch nicht Unicode-fähig. Nachdem die Felder in der SQL-Datenbank nun Unicode-fähig gemacht wurden, erhalte ich auch beim Einfügen des Unicode-Zeichens \u0416 das entsprechende kyrillische Zeichen in der Datenbank. Das eine Problem ist somit gelöst. Jetzt bräuchte ich nur noch den entsprechenden JDBC-Treiber.
Kennst Du zufällig einen JDBC-Treiber bzw. eine JDBC-ODBC-Bridge, die Unicode-fähig ist und evtl. auch noch kostenlos ist ? Ich habe nur die von Easysoft gefunden und die ist leider kostenpflichtig.

Gruß,
KM

BenderD
06-12-04, 08:44
Hallo,

wenn ich das richtig sehe, suchst du jetzt noch für Excel? da könnte ich auch nur Mr. Google bemühen und würde vermutlich die POI Schnittstellen (http://jakarta.apache.org/poi/) vorziehen.

mfg

Dieter Bender


Habe jetzt herausgefunden, dass das Problem aus 2 Teilen besteht. Zum einen hat unser SQL-Server-Administrator die Datenbankfelder tatsächlich nicht als Unicode-fähig definiert, obwohl ich es ihm gesagt hatte. Zum anderen ist die JDBC-ODBC-Bridge von Sun auch nicht Unicode-fähig. Nachdem die Felder in der SQL-Datenbank nun Unicode-fähig gemacht wurden, erhalte ich auch beim Einfügen des Unicode-Zeichens \u0416 das entsprechende kyrillische Zeichen in der Datenbank. Das eine Problem ist somit gelöst. Jetzt bräuchte ich nur noch den entsprechenden JDBC-Treiber.
Kennst Du zufällig einen JDBC-Treiber bzw. eine JDBC-ODBC-Bridge, die Unicode-fähig ist und evtl. auch noch kostenlos ist ? Ich habe nur die von Easysoft gefunden und die ist leider kostenpflichtig.

Gruß,
KM

KM
06-12-04, 13:23
Ich habe soeben noch einen JDBC-Treiber für Excel gefunden (xlSQL). Vielleicht kann ich den ja benutzen. Mal sehen was man damit so alles machen kann. Ansonsten werde ich wohl doch auf POI oder JExcelAPI zurückgreifen müssen.

Gruß,
KM