PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umlaute beim Export aus Datenbank



mec
10-01-2005, 10:02
Hallo!
Ich habe eine mysql-Datenbank, die ich in Excel mittels eines ODBC-Treibers einlese. Mein Problem ist, dass die Umlaute (ö,ü,ä,ß) dabei flöten gehen, d.h. in der Datenbank sind sie korrekt dargestellt, nur in Excel erscheinen komische Zeichen.

Hat jemand eine Idee?
Gruß,
mec

mec
10-01-2005, 13:43
Hat wirklich keiner eine Idee?

quinte17
10-01-2005, 15:15
das ganze hat etwas mit zeichensätzen zu tun.
wenn du mit dem editor unter windows folgendes c-programm schreibst:


#include <stdio.h>

int main()
{
printf("böhse\n");
return 0;
}

dann wird aus dem ö meist ein anderes zeichen % oder so (habs grad nicht ausprobiert) obwohl du es doch vermeintlich richtig eingetippt hast!

für die lösung des problems hast du 2 möglichkeiten, entweder bringst du dem excel bei mit dem richtigen encoding (zeichensatz) zu arbeiten, oder du sagst der datenbank mit welchem zeichensatz du denn speichern willst...

greetz

Christoph
10-01-2005, 16:50
Oder du bist über den MS-Schwachsinn gestolpert, dass "Eingabeaufforderung" und Windows verschiedene Encodings verwenden. Da gibt's in der cmd.exe glaube ich einen Befehl "codepage" (oder so ähnlich) mit dem man das umsetzen muss, allerdings klappt das nur, wenn man gleichzeitig den Font ändert.

Das ist ganz gut in der PostgreSQL (sic!) Doku im Abschnitt "Installation unter WIndows" beschrieben. Oder in irgendeiner Perl-Doku habe ich das auch mal erläutert gesehen.

mec
11-01-2005, 07:18
Danke für die Antworten! Ich hatt mir schon sowas gedacht, dass es mit dem Zeichensatz zu tun hat.
Ist nur so, dass ich auf´m Mac arbeite (sorry, hatt ich vergessen, im ersten Posting zu erwähnen). Mit der Windows-Anleitung kann ich somit nicht viel anfangen.
Wie bringe ich Excel bei mit dem richtigen encoding zu arbeiten?

quinte17
11-01-2005, 07:45
mhh gute frage....
ich glaube es wäre einfacher der datenbank das beizubringen ;)

vielleicht hilft dir das hier weiter:
http://dev.mysql.com/doc/mysql/en/Charset-national.html
http://dev.mysql.com/doc/mysql/en/Charset-we-sets.html

greetz

mec
11-01-2005, 08:16
Welchen Zeichensatz muss ich denn nehmen, damit es mit Excel übereinstimmt? Utf-8???

quinte17
11-01-2005, 08:24
da kenn ich mich leider zu wenig auf dem gebiet aus ;( sorry
vielleicht weiß es ja jemand aders?

utf-8 ist es aber eher nicht... (glaub ich)

mec
11-01-2005, 09:05
Ja, hab auch gerade gesehen, dass utf-8 bei mysql standardmäßig voreingestellt ist. Hm...

jeebee
11-01-2005, 12:41
wenn ich mich nicht täusche braucht excel iso8859-1 zeichensatz

alle angaben ohne gewähr ;)

mec
11-01-2005, 13:52
Also iso8859-1 ist ja Latin1. Ich hab´s jetzt mal mit Latin1 in mySQL sowie auch mit UTF-8 ausprobiert, leider ohne Erfolgt: in Excel erscheinen weiterhin seltsame Zeichen. Ein unlösbares Problem ???

Christoph
11-01-2005, 14:19
Um das Problem einzugrenzen, solltest Du vielleicht erstmal die Daten vom Terminal (liegt in Programme/Dienstprogramme) aus testen. Im Terminal kannst Du den Zeichensatz irgendwo einstellen (Ich glaube unter Einstellungen/Fenster oder so). Standardmäßig ist das utf8.

Wie sehen Umlaute aus, wenn Du im Terminal mit SELECT Daten ausliest? Probiere verschiedene Encodings aus. Wenn es da irgendwie klappt, dann ist das schon mal eine gute Ausgangslage.

Ansonsten kenne ich mich nur mit PostgreSQL aus, aber ich denke mal, dass es bei MySQL ähnlich ist: es gibt die Encoding der Daten in der Datenbank, das Client-Encoding (das die DB-Bibliothek, in deinem Fall ODBC, zurückliefert) und das Encoding dass die Applikation (in deinem Fall Excel) zur Darstellung verwendet. Bei PostgreSQL kann man die ersten beiden konfigurieren, für die dritte ist Excel zuständig. Insgesamt gibt es also mehrere Stellen, an denen was schiefgehen kann.

mec
11-01-2005, 15:34
Ich habe im Terminal schon nachgeschaut. Wenn ich die Daten mit select auslese, werden sie alle richtig dargestellt. Nur wenn ich dann über ODBC (My ODBC 3.51) die Daten in Excel 2004 übertrage, erscheinen keine Umlaute mehr, sondern sowas wie ? ‰ ¸

Christoph
11-01-2005, 15:39
Ich habe im Terminal schon nachgeschaut. Wenn ich die Daten mit select auslese, werden sie alle richtig dargestellt. Nur wenn ich dann über ODBC (My ODBC 3.51) die Daten in Excel 2004 übertrage, erscheinen keine Umlaute mehr, sondern sowas wie ? ‰ ¸
Dann guck doch mal in den Terminal-Einstellungen nach, welches Encoding Du eingestellt hast. Und gucke in der MySQL Doku mal nach, wie das Server-Encoding und das Client-Encoding abgefragt und eingestellt werden. So was wie diese Doku hier gibt es bestimmt auch für MySQL:
http://www.de.postgresql.org/docs/7.4/interactive/multibyte.html
Da steht auch ein interessanter Hinweis auf Optionen im ODBC-Treiber.

mec
11-01-2005, 15:55
Server sowie client stehen auf Latin1. Ich hab auch schon probeweise mal auf UTF-8 umgestellt, hat aber in der Excel-Ausgabe nichts genützt.
Danke für den Link, werd ich mir mal genauer reinziehen. Wenn ich nicht weiter komme, meld ich mich wieder ;)

Christoph
11-01-2005, 15:58
Server sowie client stehen auf Latin1.
Dass würde bedeuten, dass keine Konvertierung stattfindet (da ja Serverencoding == Clientencoding). Im Terminal siehst Du aber utf8. Ich würde mal vermuten, dass Du dann das Server-Encoding auf utf8 umstellen musst.

mec
12-01-2005, 14:17
Gut, das hab ich nun versucht mit --default-character-set=utf8 , aber es tut sich nichts. Immer noch Latin1 überall... Was mach ich falsch?

mec
18-01-2005, 14:12
Hallo, ich bin´s nochmal. Das Problem ist immer noch nicht gelöst :(
Ich hab jetzt das Server-Encoding auf utf-8 umgestellt. Hat aber leider am eigentlichen Problem nichts geändert: Beim Einlesen der Tabelle in Excel gehen die Umlaute verloren.
Liegt´s vielleicht am ODBC-Treiber? Oder muss ich in Excel irgendwas einstellen?
Help!!!!!!! :confused:

Romanday
19-01-2005, 16:50
Hallo, ich bin´s nochmal. Das Problem ist immer noch nicht gelöst :(
Ich hab jetzt das Server-Encoding auf utf-8 umgestellt. Hat aber leider am eigentlichen Problem nichts geändert: Beim Einlesen der Tabelle in Excel gehen die Umlaute verloren.
Liegt´s vielleicht am ODBC-Treiber? Oder muss ich in Excel irgendwas einstellen?
Help!!!!!!! :confused:

Lies doch mal über Access deine Problem Tabelle ein.
Dann weist du ob es am Treiber liegt.

mec
20-01-2005, 07:24
Lies doch mal über Access deine Problem Tabelle ein.
Dann weist du ob es am Treiber liegt.

Das ist keine schlechte Idee :rolleyes: Nur hab ich dummerweise kein Access auf´m Rechner.
Und läuft Access nicht in der gleichen Codierung wie Excel (keine Ahnung)???

Was ich inzwischen ziemlich sicher weiß ist, dass es daran liegt, dass Excel im ANSI-Zeichensatz läuft und mysql in ASCII. Und die Sache mit den Umlauten scheint ein bekanntes Problem zu sein, für das es scheinbar bisher keine Lösung gibt.

Romanday
20-01-2005, 08:22
Und läuft Access nicht in der gleichen Codierung wie Excel (keine Ahnung)???

Was ich inzwischen ziemlich sicher weiß ist, dass es daran liegt, dass Excel im ANSI-Zeichensatz läuft und mysql in ASCII. Und die Sache mit den Umlauten scheint ein bekanntes Problem zu sein, für das es scheinbar bisher keine Lösung gibt.

Hatte damals für einen Kunden so eine Anbindung gebastelt.
Ist aber schon eine Weile her. Lief unter Office 2000.
Da gab es in dieser Hinsicht keine Probleme.

Ich weiß auch nicht, warum du unbedingt Excel brauchst.
Access ist doch viel leistungsfähiger. Wenn es nun unbedingt mal
eine extreme Berechnung seien muß, kann man auch ohne Probleme
eine Tabelle aus Access nach Excel exportieren.

Das einzige, was Du beachten mußt, ist das Access dir deine Ansi Querys
umschreibt nach MS Syntax.

mec
20-01-2005, 12:03
Ok, ich denke inzwischen auch, dass Access wohl die "Lösung" ist. Ich hab´s halt mit Excel versucht, da ich kein Access hab (gibt´s für Mac nicht). Muss ich wohl mal auf Windows probieren. Oder mir Filemaker besorgen, damit müsste es ja auch gehn.
Auf jeden Fall: Danke für die Antworten!!!