CSV und Umlaute [GELÖST]

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
paulderfinne
Beiträge: 65
Registriert: Mi 27. Feb 2013, 18:24
OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
CPU-Target: 32Bit

CSV und Umlaute [GELÖST]

Beitrag von paulderfinne »

Hallo meine Lieben,
verzweifle hier ein bisschen. Habe eine CSV-Datei mit Kundendaten, diese sind IMHO in utf8 kodiert, meine locales auch:

>locale
liefert:
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
usw...
>file Kunden.csv
liefert:
Kunden.csv: UTF-8 Unicode text, with very long lines

Wenn ich Daten in via Lazarus (Zeos) eingebe werden alle Umlaute richtig kodiert und dargestellt. Wenn ich aber die Datei Kunden.csv in Mysql importiere mittels:
load data infile '/pfadzudaten/test.csv' into table kunden fields terminated by ',' lines terminated by '\n';

Dann bekomme ich die Umlaute falsch kodiert (ü ist z.B.: ü)


Hat jemand eine Idee was da schief läuft?

So sieht eine Zeile im File beispielsweise aus.
ALW,Herr,,Alwang,Jürgen,,Ziegenstr. 29,90482,Nürnberg,0911-541387,,,,,,,Simmelsdorferstr. 8,,,Nürnberg-Laufamholz,,08/99: Anfrage Pflege,WÜ,12.09.2002,
Zuletzt geändert von paulderfinne am So 28. Dez 2014, 18:59, insgesamt 1-mal geändert.

Mathias
Beiträge: 6194
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: CSV und Umlaute

Beitrag von Mathias »

Irgendwo bei deinem Quelltext muss ein UTF8toSys oder SystoUTF8 rein.

Bei folgenden Code wird auch ein "ü" anstelle eines "ü" erzeugt.

Code: Alles auswählen

  AZipper.Filename := 'ööü.zip';
//  AZipper.Filename := UTF8toSys('ööü.zip');
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: CSV und Umlaute

Beitrag von Socke »

Mathias hat geschrieben:Irgendwo bei deinem Quelltext muss ein UTF8toSys oder SystoUTF8 rein.

Die Datei geht gar nicht durch das Programm sondern direkt in die MySQL-Datenbank.

paulderfinne hat geschrieben:Wenn ich aber die Datei Kunden.csv in Mysql importiere mittels:
load data infile '/pfadzudaten/test.csv' into table kunden fields terminated by ',' lines terminated by '\n';

Schon einmal daran gedacht, MySQL mitzuteilen, welcher Zeichensatz verwendet werden soll?
http://dev.mysql.com/doc/refman/5.1/en/load-data.html
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: CSV und Umlaute

Beitrag von theo »

Socke hat recht.
Ich mache MySQL "Zeug" meistens mit phpMyAdmin, da erspart man sich die Kommandozeilenoptionen.
Dateianhänge
phpmy.png

paulderfinne
Beiträge: 65
Registriert: Mi 27. Feb 2013, 18:24
OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
CPU-Target: 32Bit

Re: CSV und Umlaute

Beitrag von paulderfinne »

Socke hat geschrieben:Schon einmal daran gedacht, MySQL mitzuteilen, welcher Zeichensatz verwendet werden soll?
http://dev.mysql.com/doc/refman/5.1/en/load-data.html


Danke Socke, das war der richtige Tipp. Offenbar muss man der kleinen My explizit nochmal mitteiln, dass es sich um utf8-kodierte Zeilen handelt. Mein Import-Statment lautet also: (Für alle die das gleiche Problem haben):

mysql> load data infile '/pathtothefile/Kunden.csv' into table kunden character set utf8 fields terminated by ',' enclosed by '"' lines terminated by '\n';

Vielen Dank euch allen. Ihr seid immer soo lib und nehmt euch Zeit.

@theo: Vielen Dank auch dir. Ich habe eher selten mit Sowas zu tun und habe keine Lust auf alle möglichen GUIs. Bin schon etwas in die Jahre gekommen und als "Consolero" aufgewachsen.

Antworten