einlesen einer datei mit php

einlesen einer datei mit php

am 18.10.2006 11:34:30 von Dirk Laurenz

Hallo,

ich habe eine Datei, die WINDOWS(ANSI) kodiert ist (csv) und nach unix
kopiert wird. Dort setze ich diese mittels dos2unix auf unix kodierung
um. Ich lese sie dann mit fgetcsv zeilenweise ein. Leider werden die
umlaut aber nur octal eingelesen.
file /datei.csv sagt : ISO-8859 test, with very long lines

Eine Zeile sieht zum Beispiel so aus:

joergm:Jörg:Möller:....

Eingelesen wird dann J355rg oder sowas in der Richtung.

Wie kann ich die umlaute korrekt einlesen?

Dirk Laurenz

Re: einlesen einer datei mit php

am 18.10.2006 13:55:46 von Ulf Kadner

Dirk Laurenz schrieb:

> ich habe eine Datei, die WINDOWS(ANSI) kodiert ist (csv) und nach unix
> kopiert wird. Dort setze ich diese mittels dos2unix auf unix kodierung
> um.

dos2unix verändert keine kodierung! (Meins jedenfalls nicht) Es werden
nur Zeilenumbrüche \r\n nach \n gewandelt.

> umlaut aber nur octal eingelesen.

Wie sieht denn Die Datei (deren Inhalt) nach der Umwandlung aus? So wie
erwartet?

> Eine Zeile sieht zum Beispiel so aus:
>
> joergm:Jörg:Möller:....
>
> Eingelesen wird dann J355rg oder sowas in der Richtung.
>
> Wie kann ich die umlaute korrekt einlesen?

Stell erst mal sicher das dieses Problem nicht von Deinem verwendeten
Unix-Tool stammt. Ansonsten hilft (wenn nutzbar) PHPs recode

MfG, Ulf

Re: einlesen einer datei mit php

am 18.10.2006 14:07:35 von WKoe

"Dirk Laurenz" schrieb im Newsbeitrag
news:eh4sf6$1k0$1@nntp.fujitsu-siemens.com...
> Hallo,
>
> ich habe eine Datei, die WINDOWS(ANSI) kodiert ist (csv) und nach unix
> kopiert wird. Dort setze ich diese mittels dos2unix auf unix kodierung um.
> Ich lese sie dann mit fgetcsv zeilenweise ein. Leider werden die umlaut
> aber nur octal eingelesen.
> file /datei.csv sagt : ISO-8859 test, with very long lines
>
> Eine Zeile sieht zum Beispiel so aus:
>
> joergm:Jörg:Möller:....
>
> Eingelesen wird dann J355rg oder sowas in der Richtung.
>
> Wie kann ich die umlaute korrekt einlesen?
>
> Dirk Laurenz



$ansi[0] = '/\xnn/'; // hex code oder octal code für Umlaute in
ANSII Ä
$ansi[1] = '/\xnn/'; // hex code oder octal code für Umlaute in
ANSII ä
..
..
$neu[0] = 'Ä';
$neu[1] = 'ä';
usw..

$content = fread (...);
$content_neu = preg_replace($ansi, $neu, $content);

Gruß
Wolfgang

Re: einlesen einer datei mit php

am 18.10.2006 14:51:47 von Niels Braczek

Wolfgang Koenig schrieb:

> $ansi[0] =3D '/\xnn/'; // hex code oder octal code für Uml=
aute in=20
> ANSII Ä
> $ansi[1] =3D '/\xnn/'; // hex code oder octal code für Umla=
ute in=20
> ANSII ä
> .
> .
> $neu[0] =3D 'Ä';
> $neu[1] =3D 'ä';
> usw..
>=20
> $content =3D fread (...);
> $content_neu =3D preg_replace($ansi, $neu, $content);

*Schauder* Es gibt strtr().
Außerdem lohnt hier wohl eher ein Blick auf iconv().

MfG
Niels

--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------

Re: einlesen einer datei mit php

am 18.10.2006 15:27:50 von Werner Flamme

Dirk Laurenz schrieb am 18.10.2006 11:34:
> Hallo,
>
> ich habe eine Datei, die WINDOWS(ANSI) kodiert ist (csv) und nach unix
> kopiert wird. Dort setze ich diese mittels dos2unix auf unix kodierung
> um. Ich lese sie dann mit fgetcsv zeilenweise ein. Leider werden die
> umlaut aber nur octal eingelesen.
> file /datei.csv sagt : ISO-8859 test, with very long lines
>
> Eine Zeile sieht zum Beispiel so aus:
>
> joergm:Jörg:Möller:....
>
> Eingelesen wird dann J355rg oder sowas in der Richtung.
>
> Wie kann ich die umlaute korrekt einlesen?
>
> Dirk Laurenz

Hallo Dirk,

vor kurzem (am 13.09.) wurde mir der Rat zuteil: iconv() ist Dein Freund!
:-) Ich gebe ihn an Dich weiter - auch ich durfte Windoze-codierte Daten in
lesbares Format wandeln ;-) Siehe Thread ab 13.09.06: "Wandeln cp1250 in
iso8859-15 - wie?"

Freundlicher Gruß
Werner