PHPMyAdmin scheidet beim Import aus .csv Datei ab
Marcel
- datenbank
Hallo,
ich importiere mit PHPMyAdmin Version 2.10.1 Text aus einer csv-Datei (Excel2003).
Es werden dabei aber leider alle Zeichen hinter einem Umlaut einfach abgeschnitten.
MySQL Zeichensatz ist utf-8 eingestellt und utf-8 gebe ich auch beim Datenimport an.
Das verwunderliche ist, das es bisher immer problemlos ging. Es ist keine andere PHPMyAdmin oder SQL Version installiert als vorher.
An den Einstellungen habe ich auch nichts geändert.
Hat jemand eine Idee woran das liegen kann?
Danke + Gruß
Marcel
Hellihello Marcel,
ich importiere mit PHPMyAdmin Version 2.10.1 Text aus einer csv-Datei (Excel2003).
Es werden dabei aber leider alle Zeichen hinter einem Umlaut einfach abgeschnitten.
MySQL Zeichensatz ist utf-8 eingestellt und utf-8 gebe ich auch beim Datenimport an.Das verwunderliche ist, das es bisher immer problemlos ging. Es ist keine andere PHPMyAdmin oder SQL Version installiert als vorher.
An den Einstellungen habe ich auch nichts geändert.Hat jemand eine Idee woran das liegen kann?
an dem Semikolon vermutlich erstmal.
Schau doch mal Deine Csv an, ob die korrekt ist. Zudem: sind Umgebugnszeichen gesetzt("")? Vielleicht spuckt Excel ja was anderes aus als bisher? Machst Du es übers Menü und/oder vorher mit VBA?
Dank und Gruß,
frankx
Hallo frankx,
vielen Dank für deine Tipps!
an dem Semikolon vermutlich erstmal.
Kannst Du dazu etwas mehr sagen?
Schau doch mal Deine Csv an, ob die korrekt ist. Zudem: sind Umgebugnszeichen gesetzt("")? Vielleicht spuckt Excel ja was anderes aus als bisher? Machst Du es übers Menü und/oder vorher mit VBA?
In der .csv Datei sind alle Texte komplett enthalten und die Umlaute werden korrekt dargestellt. Was mir aber aufgefallen ist, ist das es öfter mal ein doppeltes "" zu sehen ist aber nicht immer!?
Ist die Fehlerursache nun doch eher bei Excel zu suchen?
Danke + Gruß
Marcel
echo $begrüßung;
In der .csv Datei sind alle Texte komplett enthalten und die Umlaute werden korrekt dargestellt.
Wie überprüfst du, dass die Umlaute "korrekt" sind? Ein einfaches Hilfsmittel ist, die Datei im Browser zu öffnen und dann über Ansicht->(Zeichen)kodierung UTF-8 und ISO-8859-1 oder Windows-1252 auszuwählen. Wenn die Umlaute richtig sind, entspricht die Kodierung der Datei höchstwahrscheinlich der eingestellten Kodierung.
Ist die Fehlerursache nun doch eher bei Excel zu suchen?
Hast du beim Exportieren angeben können, dass es UTF-8-kodiert sein soll?
Was mir aber aufgefallen ist, ist das es öfter mal ein doppeltes "" zu sehen ist aber nicht immer!?
"Steht das doppelte Anführungszeichen mitten in einem mit ""eingerahmten"" Text?" <- Das wäre laut CSV-Format richtig.
echo "$verabschiedung $name";
Hallo dedlfix,
Wie überprüfst du, dass die Umlaute "korrekt" sind? Ein einfaches Hilfsmittel ist, die Datei im Browser zu öffnen und dann über Ansicht->(Zeichen)kodierung UTF-8 und ISO-8859-1 oder Windows-1252 auszuwählen. Wenn die Umlaute richtig sind, entspricht die Kodierung der Datei höchstwahrscheinlich der eingestellten Kodierung.
Ich habe jetzt die .csv Datei in .html umbenannt und mit Firefox geöffnet. Wenn unter "Ansicht / Zeichenkodierung" UTF-8 eingestellt ist, dann werden die Umlaute korrekt angezeigt und bei ISO 8859-1 oder Windows 1250 werden keine Umlaute angezeigt bzw. z.B. "ĂĽ" anstelle eines "ü" .
Hast du beim Exportieren angeben können, dass es UTF-8-kodiert sein soll?
Ja
"Steht das doppelte Anführungszeichen mitten in einem mit ""eingerahmten"" Text?" <- Das wäre laut CSV-Format richtig.
Ja, es steht im ""eingerahmten Text"" aber nicht immer ""gleichmäßig""".
Wenn ich die Tabelle von Hand nachbearbeite und das mit den Anführungszeichen in Ordnung bringe, dann wird der Text komplett angezeigt. Nur der Arbeitsaufwand ist nicht vertretbar.
Es muss doch eine Lösung dafür geben.
Danke + Gruß
Marcel
echo $begrüßung;
Ich habe jetzt die .csv Datei in .html umbenannt und mit Firefox geöffnet. Wenn unter "Ansicht / Zeichenkodierung" UTF-8 eingestellt ist, dann werden die Umlaute korrekt angezeigt und bei ISO 8859-1 oder Windows 1250 werden keine Umlaute angezeigt bzw. z.B. "ĂĽ" anstelle eines "ü" .
Gut, dann gehe ich davon aus, dass es wirklich UTF-8-kodiert ist.
"Steht das doppelte Anführungszeichen mitten in einem mit ""eingerahmten"" Text?" <- Das wäre laut CSV-Format richtig.
Ja, es steht im ""eingerahmten Text"" aber nicht immer ""gleichmäßig""".
Wenn ein Feldwert in doppelte Anführungszeichen eingefasst ist, dann ist es eigentlich richtig, das Begrenzungszeichen zu verdoppeln, wenn es in den Daten vorkommt. Damit hat, so wie es aussieht, der phpMyAdmin Probleme. Der will es mit einem Escape-Zeichen maskiert haben.
Beim Exportieren gibt es eine Option "CSV-Daten für MS Excel", da macht er die Verdopplung, unter "CSV-Daten" nimmt er ein Escape-Zeichen.
Mir scheint, dass es keine Lösung gibt, "Doppelzeichen"-CSV-Daten zu importieren.
Wenn ich die Tabelle von Hand nachbearbeite und das mit den Anführungszeichen in Ordnung bringe, dann wird der Text komplett angezeigt. Nur der Arbeitsaufwand ist nicht vertretbar.
Es hilft ja auch nicht, "" durch " zu ersetzen, weil damit
ein;"""Beispiel""";mit;Anführungszeichen
zu
ein;""Beispiel"";mit;Anführungszeichen
Richtig wäre aber
ein;""Beispiel"";mit;Anführungszeichen
Wenn der phpMyAdmin-Support dafür keine Lösung bietet, fällt mir nur ein, ein kleines Programm mit der Umschreibung zu beauftragen.
echo "$verabschiedung $name";
Hellihello Marcel,
s.a. dedlfix.
Hallo frankx,
vielen Dank für deine Tipps!
an dem Semikolon vermutlich erstmal.
Kannst Du dazu etwas mehr sagen?
CSV:
mach überall wo eine Spalte endet, ein Semikolon.
mach überall wo eine Zeile endet ein CR (Ascii 13) und LF (Ascii 10)
wenn eines der beiden o.g. Zeichen in der Zelle vorkommt mach folgendes:
a) Packe "um die Zelle" ein doppeltes Hochkomma (Anführungszeichen '"').
b) Kommt im Zelleninhalt ein Anführungszeichen vor, verdoppele dieses.
Wären Deinem Umlaute jetzt als Entity kodiert (ä oder so) dann könnte das Semikolon im Wege stehen, wenn
1. Excel beim CSV-Erstellen Mist baut
2. PHP das nicht richtig einliest, wie Excel das verpackt hat.
Wenn sich beide an o.g. "Standard" halten, solle es aber funktionieren (;-).
Ist die Fehlerursache nun doch eher bei Excel zu suchen?
Wenn die CSV korrekt ist, nicht. Überlege vielleicht, was sich geändert hat seitdem (Excelversion, Dateiinhalte), wenn es doch vorher schon klappte.
Dank und Gruß,
frankx
Hallo frankx und dedlfix,
ich habe es hinbekommen. Es lag an dem Excel Export.
Mit einem Makro (gibt es hier: http://www.office-loesung.de/ftopic192563_0_0_asc.php), in welchem man die Texttrenner usw. ändern kann, gespeichert und den entsprechenden Einstellungen im PhpMyAdmin angepasst:
Felder getrennt mit - "|"
Felder eingeschlossen von - leer
Felder escapde von - leer
klappt der Import wunderbar.
Danke für eure Unterstützung.
Gruß Marcel