Mailinglisten-Archive |
Hallo Liste,
ich erzeuge mit PHP aus mysql-Datensätzen eine TXT-Datei, die
vom Win2000-FTP-Client im ASCII-Modus runtergeladen und dann
von einem DOS Programm weiterverarbeitet wird.
Das Problem liegt in den Umlauten, ein "Klüber" wird z.B. zu
"Kl³ber" usw. (in DOS mit "type" angezeigt).
Der DOS-Mensch meint, ich würde die Daten im Ansi-Format anliefern.
Mein erster Lösungsansatz funktioniert insoweit, dass ein "ss"
ersetzt wird, aber immer noch keine Umlaute:
$row = array(
"name1" => "Müller",
"name2" => "Klüber",
"str" => "Straße"
);
print "<pre>";
print_r($row);
foreach($row as $key => $val) {
$row[$key] = ereg_replace ("ä", "ae", $val);
$row[$key] = ereg_replace ("ö", "oe", $val);
$row[$key] = ereg_replace ("ü", "ue", $val);
$row[$key] = ereg_replace ("Ä", "Ae", $val);
$row[$key] = ereg_replace ("Ö", "Oe", $val);
$row[$key] = ereg_replace ("Ü", "Ue", $val);
$row[$key] = ereg_replace ("ß", "ss", $val);
}
print_r ($row);
Ausgabe:
Array
(
[name1] => Müller
[name2] => Klüber
[str] => Straße
)
Array
(
[name1] => Müller
[name2] => Klüber
[str] => Strasse
)
Der zweite Lösungsansatz besteht darin, die Umlaute durch
ASCII-Codes zu ersetzen:
$ascii_ae = sprintf("%c", 132);
$ascii_oe = sprintf("%c", 148);
$ascii_ue = sprintf("%c", 129);
$ascii_Ae = sprintf("%c", 142);
$ascii_Oe = sprintf("%c", 153);
$ascii_Ue = sprintf("%c", 154);
$ascii_ss = sprintf("%c", 225);
$row = array(
"name1" => "Müller",
"name2" => "Klüber",
"str" => "Straße"
);
print "<pre>";
print_r($row);
foreach($row as $key => $val) {
$row[$key] = ereg_replace ("ä", $ascii_ae, $val);
$row[$key] = ereg_replace ("ö", $ascii_oe, $val);
$row[$key] = ereg_replace ("ü", $ascii_ue, $val);
$row[$key] = ereg_replace ("Ä", $ascii_Ae, $val);
$row[$key] = ereg_replace ("Ö", $ascii_Oe, $val);
$row[$key] = ereg_replace ("Ü", $ascii_Ue, $val);
$row[$key] = ereg_replace ("ß", $ascii_ss, $val);
}
print_r ($row)
Ausgabe:
Array
(
[name1] => Müller
[name2] => Klüber
[str] => Straße
)
Array
(
[name1] => Müller
[name2] => Klüber
[str] => Straáe
)
Auch hier werden die Umlaute erst gar nicht gefunden und ob das
ß so richtig "übersetzt" wurde bezweifel ich auch...
Was tun?
Martin
php::bar PHP Wiki - Listenarchive