getBytes() - russland/bulgarien -- andere Codecs Probleme

Status
Nicht offen für weitere Antworten.

thE_29

Top Contributor
Also, ich habe eine Tabelle in der lauter Werte in einer Zeile (255 Zeichen lang) als byte drinnen steht!


Das ganze habe ich via getBytes() ausgelesen!


Unter österr. Filialen, bzw Filialen in denen die Oracle Datenbank nicht mit einem veränderten Codec aufgesetzt wurde, klappt das ganze auch!


Wenn ich dies aber auf einer russischen Filiale ausführt (komplette Datenbank wurde anders aufgesetzt - da man kyrilische Zeichen einfach so abspeichern kann), so kommen lauter komische Werte heraus!


Exportiere ich diese Tabelle mit einem C Tool und füg sie bei mir ein, geht es!

Ein anderes Tool (ebenfalls C) kann die byte Werte richtig auslesen, ich nicht!!


Die String usw gehen mit den getString Methoden auch richtig auslesen, nur bei den bytes hat es anscheinend was!


Habe auch schon per getAscii/BinaryStream() probiert, aber leider auch kein erfolg!


Weiß hier jemand einen Rat, bzw. geht das irgendwie, das ich an meine richtige Daten herankomm??
 

Bleiglanz

Gesperrter Benutzer
na dann?

nimm lieber getString, sonst läufst du ja volle kanne in das Encoding theater rein?
 

thE_29

Top Contributor
uiui... schon wieder das Theater...

Du meinst wenn ich getString nehme und dann getBytes sollte das gehn??

Ich teste mal :/
 

Bleiglanz

Gesperrter Benutzer
wenn du bei getBytes IMMER das gleiche Encoding nimmst vielleicht

aber was soll das?

entweder du willst bytes - dann nimm einen BLOB

oder du willst text - dann nimm VARCHAR2 oder CLOB

aber reine Bytes in einer Textspalte - > das ist übel, hast du ja schon gemerkt :)
 

thE_29

Top Contributor
Tjo, leider ist das DB Konzept schon ziemlich alt und ich kann das nicht mehr ändern..

Wie die das damals erstellt haben, hat wahrscheinlich keiner dran gedacht, dass das jemals nach Russland oder so kommt... :/
 

Bleiglanz

Gesperrter Benutzer
also wollt ihr eine Byte-Folge in der DB in eine (VAR)CHAR Spalte ablegen?

es wäre vielleicht möglich, dürfte aber selbst dann schwierig sein, wenn das Client-Programm immer das gleiche Encoding verwendet, weil die meisten DBs auch noch eine Einstellung diesbezüglich zulassen (und dann uU Sonderzeichenprobleme auftreten)

funktionieren kann eigentlich nur base64 oder sowas, könnt ihr vielleicht darauf umstellen?
 

thE_29

Top Contributor
Mh, habs jetzt geschaft ;)


Ich lese es mit einem String aus und mit dem ByteBuffer und Charset habe ich es aufh US-ASCII encodiert und dann haben die Daten auch schon gepasst ;)

Aber danke für die Mühe, hast ein paar Denkanstöße hervorgeleited!
 
Status
Nicht offen für weitere Antworten.

Oben