moin,
Zeig mal, was du bei einem Umlaut in der Workbench siehst. Und frag von einem Wert mit Sonderzeichen drin LENGTH() und CHARACTER_LENGTH() ab. Das eine muss die Anzahl der Bytes liefern (also bei einem String mit n Zeichen inklusive einem Umlaut: n+1), das andere die Anzahl der Zeichen (also n).
dsa ist der string, den ich mit der abfrage über die workbench sehe: "Pöhlitz". und ich bekomme daür bei LENGTH 11, bzw. bei character_LENGTH 8 zurück, so wie du es vermutet hast.
Wenn du n+3 und n+1 erhältst, hat man zwar UTF-8-Daten gesendet aber MySQL ging von Latin1 aus. MySQL wertet dann jedes UTF-8-Byte als ein Latin1-Zeichen, kodiert das zum Speichern gemäß Feldkodierung nach UTF-8 um.
das würde bedeuten, die daten sind schon falsch in die Datenbank gekommen, was meine verfälschten sonderzeichen erklärt.
Beim Abfragen macht es daraus wieder Latin1 und übergibt es dem Client, woraufhin dieser davon ausgeht, die Bytes seien UTF-8.
gut, das geht dann aber nur in dieser gesonderten konstellation, mein workbench client arbeitet ja mit utf-8. du meinst dadurch fällt es den anderen nicht auf, dass die codierung falsch ist ?
Oracle interessiert hier nicht, sondern die anderen Programme, die Daten in die MySQL-Tabellen schreiben, die du workbenchen willst.
ich schreibe gar keine daten rein, ich kann/solll die daten nur auslesen. das mache ich dann am ende über oracle, aber ich will zum besseren vergleich das auch parallel mit der workbench machen. insofern habe ich keinen einfluss auf die programme, die daten in die mysql datenbank schreiben.
Ilja