Falsche Umlaute in dBASE-Daten mit Access

Das leidige Thema falscher Umlaute wird wohl noch Generationen von Programmierern Zeit und Nerven kosten. Nicht nur bei der Konvertierung alter DOS-Daten nach Windows besteht dieses Problem, sondern z. B. auch wenn Sie mit Microsoft Access Daten ins dBASE-Format exportieren. Das kann manuell gemacht werden oder per VBA-Befehl TransferDatabase. Wenn die Umlaute in der erstellten DBF-Datei korrekt sind haben Sie Glück und können sich wieder den wirklich wichtigen Dingen des Lebens zuwenden. Wenn nicht lesen Sie bitte weiter.

Ursache der falschen Umlaute ist fast immer die unglückliche Voreinstellung OEM-Zeichensatz statt ANSI bei der dBASE-Schnittstelle von Access. Eine Änderung dieser Voreinstellung ist in der Windows-Registry leicht möglich, wenn man die richtige Stelle erst einmal gefunden hat. Dass die zu ändernde Einstellung in der Registry oft mehrfach vorkommt und je nach Ihrer Windows- und Office-Version in anderen Zweigen zu finden ist macht es nicht leichter.

Sie benötigen dazu das Programm regedit. Es ist meist nicht über das Startmenü direkt erreichbar, damit man nicht unbedarft in der Registry “herumspielt”, doch Sie können es manuell über Start – Ausführen starten. Oder Sie öffnen die sog. MS-DOS Eingabeaufforderung und geben dort den Befehl regedit ein. Dann sollte der Registrierungs-Editor starten.

Durch dieses unsägliche Wirrwarr in der Registry mit oft zigtausend Einträgen müssen Sie sich die folgenden Einträge entlang hangeln und durch Klick auf das [+] diese jeweils öffnen:

– Arbeitsplatz

— HKEY_LOCAL_MACHINE

— Software

—- Wow6432Node (*)

—– Microsoft

—— Office

——- xx.yy (Ihre Office-Version, z. B. 14.0)

——– Access Connectivity Engine

——— Engines

* Dieser Zweig ist nur bei den 64bit-Version von Vista oder Win7 mit 32-bit Office relevant. Bei Windows XP oder 32-bit Versionen von Vista und Windows7 gibt es diesen Zweig nicht.

Wenn Sie den Zweig Engines geöffnet haben sehen Sie darunter diverse Ordnersymbole und einer davon sollte Xbase heissen. Diesen bitte anklicken. Dann sehen Sie im Fenster rechts diverse Einträge, u. a. einen namens DataCodePage und dessen Wert steht rechts davon. Vermutlich ist dies OEM, und genau darin liegt das Problem, hier sollte ANSI stehen.

Doppelklicken Sie bitte den Namen DataCodePage, es öffnet sich ein Fenster mit dem Titel Zeichenfolge bearbeiten, darin steht (nicht änderbar) Name: DataCodePage und darunter (änderbar) Wert: OEM. Ändern Sie den Wert von OEM in ANSI und klicken Sie auf OK.

Dadurch wurde der Zeichensatz, mit dem Access auf dBASE-Daten zugreift bzw. dBASE Daten schreibt, geändert. Beenden Sie den Registrierungs-Editor, wobei eine explizite Rückfrage ob Sie diese Änderung speichern wollen meist nicht erfolgt, weil das Programm beim beenden autom. alle Änderungen speichert. Nicht zuletzt deshalb sollten Sie in der Registry nur Änderungen vornehmen, wenn Sie auch einen guten Grund dazu haben!

Ein Neustart von Windows sollte nicht nötig sein, schadet aber auch nicht, wenn es wider Erwarten immer noch nicht funktionieren sollte. Testen Sie anschliessend den Zugriff auf die dBASE-Daten oder den Export in das dBASE-Format mit Access.

Falls Sie den oben beschriebenen Abschnitt in Ihrer Registry nicht finden, können Sie auch alternativ mit F3 bzw. STRG-F nach dem Eintrag DataCodePage suchen. Diese Suche kann etwas dauern … Beachten Sie bitte auch, dass Einträge mit Namen DataCodePage mehrfach vorkommen kann. Ein erneuter Druck von F3 setzt die Suche ab der aktuellen Fundstelle fort.

Wichtig ist die Fundstelle, die in einem Zweig namens Xbase steht. Fundstellen in Zweigen mit anderen Namen, z. B. Paradox oder SharePoint, sind irrelevant. Es geht um dBASE, dessen Datenformat gelegentlich auch als xBASE oder Xbase bezeichnet wird, so wie auch hier.

Es kann auch sein, dass Sie vermeintlich passende Einträge nicht im Zweig … – Microsoft – Office … finden, sondern bei … – Microsoft – Jet – Engines – …. Doch die dortige Änderung ist (fast immer) nutzlos. Lediglich wenn es bei Ihnen den Zweig mit … Office … nicht gibt ist es einen Versuch wert, die Einträge unter … Jet … probeweise von OEM auf ANSI zu ändern.

Damit sollte das Problem gelöst sein, zumindest für eine Weile. Denn wenn Sie ein Update von Access oder MS-Office installieren beginnt das Spiel vielleicht wieder von vorne …

(Stand dieser Info: 2012)