Hallo,
eine SQL Abfrage wird mit "mysql_fetch_row" in ein bestimmtes Format (attribut="value") gebracht, um von einem anderen Datenbanksystem weiter bearbetet zu werden. Die eigene Funktion "str_replace" ersetzt Anführungszeichen und Zeilenumbrüche in \" und >cr< um auf dem Zielsystem wieder umgewandelt zu werden)
Es hat sich herausgestellt, dass die Daten je nach Zeichenkodierung mit utf8_encode umgewandelt werden müssen. Ob utf8_encode ausgeführt werden soll, wird per Parameter übergeben.
Folgender Code funktioniert, aber der Aufruf von utf8_encode (und auch von str_replace) in jeder Zeile wird bei 50 Zeilen sehr aufwendig da jede Zeile ja 2x vorhanden sein muss. Ich befürchte auch Geschwindigkeitsnachteile, wenn jede Zeile einzeln umgewandelt wird.
Geht das (später mit 50 sql Feldern) nicht eleganter?
Ich stell mir vor, "utf8_encode und str_replace" 1 x auf alles anzuwenden.
Berücksichtigt werden muss auch, dass str_replace IMMER, aber utf8_encode nur ausgeführt werden soll, wenn $encoding == "UTF-8" ist.
Gruß
Eviandem
eine SQL Abfrage wird mit "mysql_fetch_row" in ein bestimmtes Format (attribut="value") gebracht, um von einem anderen Datenbanksystem weiter bearbetet zu werden. Die eigene Funktion "str_replace" ersetzt Anführungszeichen und Zeilenumbrüche in \" und >cr< um auf dem Zielsystem wieder umgewandelt zu werden)
Es hat sich herausgestellt, dass die Daten je nach Zeichenkodierung mit utf8_encode umgewandelt werden müssen. Ob utf8_encode ausgeführt werden soll, wird per Parameter übergeben.
Folgender Code funktioniert, aber der Aufruf von utf8_encode (und auch von str_replace) in jeder Zeile wird bei 50 Zeilen sehr aufwendig da jede Zeile ja 2x vorhanden sein muss. Ich befürchte auch Geschwindigkeitsnachteile, wenn jede Zeile einzeln umgewandelt wird.
Geht das (später mit 50 sql Feldern) nicht eleganter?
PHP-Code:
while( $row = mysql_fetch_row ($result)){
if ($encoding == "UTF-8") {
echo "orders_id=\"$row[0]\"\n";
echo "customers_id=\"$row[1]\"\n";
echo "customers_name=\"".utf8_encode (str_replace( $find, $replace, $row[2]))."\"\n";
echo "customers_company=\"".utf8_encode (str_replace( $find, $replace, $row[3]))."\"\n";
echo "Encoding=UTF-8\n";
}
else
{
echo "orders_id=\"$row[0]\"\n";
echo "customers_id=\"$row[1]\"\n";
echo "customers_name=\"".str_replace( $find, $replace, $row[2])."\"\n";
echo "customers_company=\"".str_replace( $find, $replace, $row[3])."\"\n";
echo "Encoding=none\n";
}
echo "-----\n";
Berücksichtigt werden muss auch, dass str_replace IMMER, aber utf8_encode nur ausgeführt werden soll, wenn $encoding == "UTF-8" ist.
Gruß
Eviandem
Kommentar