Problem mit Collation zwischen MS Access 2003 <> MyODBC <> MySQL5.0.45

Problem mit Collation zwischen MS Access 2003 <> MyODBC <> MySQL5.0.45

am 04.11.2007 22:40:01 von andreas.mueller.germany

Hallo liebe Gruppe,

ich benutze (vorgabenbedingt) MySQL5.0.45 als Datenbank-Backend und MS
Access 2003 als Datenbank-Frontend. Dazwischen sitzt der MyODBC-
Treiber 3.51.

Die Collation steht im Backend überall standardmäßig auf
"utf8_general_ci".
Schaue ich mir den Inhalt der Datensätze im Backend (z.B. mit MySQL
Maestro oder phpMyAdmin) an, ist mein "ö" tatsächlich ein "ö".
Schaue ich mir die Datensätze im Frontend an, wird aus "ö" ein "ö"
usw...

Ändere ich diesen Wert im Frontend händisch auf "ö", bekomme ich
folgende Fehlermeldung:
ODBC: Aktualisierung in einer verknüpften Tabelle '...'
fehlgeschlagen.
[MySQL][ODBC 3.51 Driver][mysqld-5.0.45-community-nt]Incorrect string
value '\xF6....' for column '...' at row 1 (#1366)

Der angemaulte Wert "\xF6" ist natürlich mein "ö".
Wenn ich an dieser Stelle "oe" eingebe, klappt es erwartungsgemäß ohne
Probleme.

Soweit ich weiß, sollte MS Access seit 2000 problemlos mit UTF8
zusammenarbeiten.
Aber auch andere Collations (latin1_german1_ci, ucs2_unicode_ci)
führen leider jeweils nur zum gleichen "Erfolg".

Hat jemand einen Tipp für mich, an welcher Stelle es hier klemmen
könnte?

Danke & Grüße,
Andreas

Re: Problem mit Collation zwischen MS Access 2003 <> MyODBC <> MySQL5.0.45

am 05.11.2007 08:37:58 von Christian Kirsch

Andreas Müller schrieb:
> Hallo liebe Gruppe,
>
> ich benutze (vorgabenbedingt) MySQL5.0.45 als Datenbank-Backend und MS
> Access 2003 als Datenbank-Frontend. Dazwischen sitzt der MyODBC-
> Treiber 3.51.
>
> Die Collation steht im Backend überall standardmäßig auf
> "utf8_general_ci".
> Schaue ich mir den Inhalt der Datensätze im Backend (z.B. mit MySQL
> Maestro oder phpMyAdmin) an, ist mein "ö" tatsächlich ein "ö".
> Schaue ich mir die Datensätze im Frontend an, wird aus "ö" ein "ö"
> usw...
>

Dann stell Dein Frontend so ein, dass es als Zeichensatz UTF-8 erwartet
und nicht ISO oder Win-irgendwas.

> Ändere ich diesen Wert im Frontend händisch auf "ö", bekomme ich
> folgende Fehlermeldung:
> ODBC: Aktualisierung in einer verknüpften Tabelle '...'
> fehlgeschlagen.
> [MySQL][ODBC 3.51 Driver][mysqld-5.0.45-community-nt]Incorrect string
> value '\xF6....' for column '...' at row 1 (#1366)
>

Klar, ein ISO-ö ist kein gültiges Zeichen in UTF-8

> Der angemaulte Wert "\xF6" ist natürlich mein "ö".
> Wenn ich an dieser Stelle "oe" eingebe, klappt es erwartungsgemäß ohne
> Probleme.
>

Sicher. Auch wenn Du ue, ss oder sonstirgendwas eingibst, was Teil des
ASCII-Zeichensatzes ist. Denn ASCII ist eine Teilmenge von UTF-8.

> Soweit ich weiß, sollte MS Access seit 2000 problemlos mit UTF8
> zusammenarbeiten.
> Aber auch andere Collations (latin1_german1_ci, ucs2_unicode_ci)
> führen leider jeweils nur zum gleichen "Erfolg".
>
>

Warum sollten sie auch? Die Collation hat doch mit Deinem Problem gar
nichts zu tun - sie regelt nur die Sortierung, also ob Müller vor oder
nach Muller kommt etc. Hier geht es aber um den Zeichensatz.

Du musst halt Dein Access so einstellen, dass es UTF-8 erwartet. Ob und
wie das geht, weiß ich nicht.

Re: Problem mit Collation zwischen MS Access 2003 <> MyODBC <> MySQL5.0.45

am 05.11.2007 08:54:39 von andreas.mueller.germany

Hallo Christian,

> Warum sollten sie auch? Die Collation hat doch mit Deinem Problem gar
> nichts zu tun - sie regelt nur die Sortierung, also ob Müller vor oder
> nach Muller kommt etc. Hier geht es aber um den Zeichensatz.

Ich dachte, mit Collation beeinflusse ich den zeichensatz! Das ich
hier eigentlich nur die Sortierung beeinflusse, wußte ich bisher
nicht. Danke für die Info!!

> Dann stell Dein Frontend so ein, dass es als Zeichensatz UTF-8 erwartet
> und nicht ISO oder Win-irgendwas.
> Du musst halt Dein Access so einstellen, dass es UTF-8 erwartet. Ob und
> wie das geht, weiß ich nicht.

Genau das wäre auch mein Ansatz. Nur habe ich in MS Access bisher
nicht gefunden, wo das gehen sollte.

Wenn ich wikipedia.org (http://de.wikipedia.org/wiki/
Microsoft_Access_Database) an dieser Stelle richtig verstehe, sollte
MS Access 2000 eigentlich schon standardmäßig Unicode UCS2 oder UTF8
benutzen. Zumindestens müßte es die Einstellungsmöglichkeiten dafür
geben. Ich werde mich mal umsehen...

Danke soweit.

Re: Problem mit Collation zwischen MS Access 2003 <> MyODBC <> MySQL5.0.45

am 05.11.2007 09:10:28 von Christian Kirsch

Am 05.11.2007 08:54 schrieb Andreas Müller:
> Hallo Christian,
>
>> Warum sollten sie auch? Die Collation hat doch mit Deinem Problem gar
>> nichts zu tun - sie regelt nur die Sortierung, also ob Müller vor oder
>> nach Muller kommt etc. Hier geht es aber um den Zeichensatz.
>
> Ich dachte, mit Collation beeinflusse ich den zeichensatz! Das ich
> hier eigentlich nur die Sortierung beeinflusse, wußte ich bisher
> nicht. Danke für die Info!!
>

Es gibt ein Handbuch zu MySQL und zwar online unter dev.mysql.com. Das
enthält ein ganzes Kapitel zum Thema Zeichensatz und Collation.

Die Lektüre empfiehlt sich ohnehin, wenn Du mit MySQL arbeiten willst
oder musst. Und zwar des kompletten Texts.

--
Christian