Jetzt ist der Inhalt der Datei utf-8 codiert.
Ankündigung
Einklappen
Keine Ankündigung bisher.
[Erledigt] Das kroatische Alphabet bringt mich noch um....
Einklappen
Neue Werbung 2019
Einklappen
X
-
Wolla,
Zitat von Wolla Beitrag anzeigenNachtrag:
Ich mache das Importieren durch Zeilenweises Lesen der CSV-Datei, Splitten der Felder am Trennzeichen (, und normalem INSERT INTO tabelle ....
Das einzig Spezielle sind die o.a. Anweisungen SET NAMES und header.
Wie weist du eine Zeile einem Parameter zu?
Aufsplitten mit explode?
danke fuer Feedback.
Bodo
Kommentar
-
David, leider ja, genau das wollte ich mit dem Satz am Ende meines Kommentars um 23:39 sagen: Trotz nun UTF8-codierter CSV-Datei, passiert das gleiche, MySQL verschluckt sich und schmeisst alles nach und inklusive "Sonderzeichen" weg.
Bodo
PS: Vielen Dank uebrigens noch fuer Deine bishrige Hilfe, das ging ja wirklich ratzfatz und sehr ueberlegt voran. Spitze!
PPS: David, sehr witzig, was ich grad sehe: Du hast Dich hier im Forum genau an meinem 40. registriert!
Kommentar
-
Na dann mal ein RundumtestPHP-Code:<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('mysql.trace_mode', 1);
$link = mysql_connect("localhost", "AKS_User", "xxxxx") or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db("AKS_Liga_Results", $link) or die(mysql_error());
mysql_query('SET NAMES "utf8"', $link) or die(mysql_error());
mysql_query('SET CHARACTER SET utf8', $link) or die(mysql_error());
$infile = 'c:/www/test/liga_results_test_2.csv';
$c = file_get_contents($infile);
$Z = chr(0xC5) . chr(0xBD);
var_dump($infile, strlen($c), strpos($c, $Z));
$sql = 'CREATE TEMPORARY TABLE tmp_liga LIKE liga_results';
mysql_query($sql, $link) or die(mysql_error());
$sql = "LOAD DATA INFILE '$infile' INTO TABLE tmp_liga FIELDS TERMINATED BY ';' lines terminated by '\r\n'";
mysql_query($sql, $link) or die(mysql_error());
$sql = 'SELECT surname, charset(surname) as c, Length(surname) as l FROM tmp_liga WHERE result_id=2';
$result = mysql_query($sql, $link) or die(mysql_error());
$row = mysql_fetch_array($result);
echo 'surname: ' . $row['surname'] . "<br />\n";
echo 'strlen(surname): ' . strlen($row['surname']) . "<br />\n";
echo 'charset: ' . $row['c'] . "<br />\n";
echo 'Length: ' . $row['l'] . "<br />\n";
Kommentar
-
Wenn ich die "nicht nach UTF8 konvertierte" CSV-Datei lade, wird nach deinem Script das ausgegeben:
------
string(35) "c:/www/test/liga_results_test_2.csv" int(443) bool(false) surname:
strlen(surname): 0
charset: utf8
Length: 0
Warning: Unknown: 1 result set(s) not freed. Use mysql_free_result to free result sets which were requested using mysql_query() in Unknown on line 0
--------
Nehme ich die stattdessen die CSV inkl Umwandlung nach UTF8
-----------
string(42) "c:/www/test/liga_results_test_2_utf8-2.csv" int(449) int(129)
Warning: mysql_query() [MySQL :: MySQL Documentation]: Incorrect integer value: '1' for column 'result_id' at row 1 in C:\www\test\rundumtest.php on line 30
Incorrect integer value: '1' for column 'result_id' at row 1
-----------
HMMM??? Ich weiss natuerlich nicht, ob's das ist, was du erwartest hast-
Es gibt uebrigens noch Neuigkeiten:
Heute morgen - nach ein paar Stunden Schlaf-Pause - hab ich nochmal etwas ausprobiert: Die nach UTF8 konvertierter CSV-Datei (Name: liga_results_test_2_utf8-2.csv) habe ich direkt ueber PHPMYADMIN importiert, Ergebnis: einwandfrei, alle character werden korrekt in der Datenbank und auch per Ausgabe per HTML-Webseite. Danke.
Kommentar
-
Zitat von b_i_g_b_o Beitrag anzeigenWenn ich die "nicht nach UTF8 konvertierte" CSV-Datei lade
Wenn Du mysql sagst "hier kommen die utf8 codierten Daten" und dann kommt was anderes, klappt es nicht.
"Probieren Sie unser Banana Split"
"hm, das ist Birne Helene"
"und was gefällt Ihnen daran nicht?"
Kommentar
-
Zitat von b_i_g_b_o Beitrag anzeigenIncorrect integer value: '1' for column 'result_id' at row 1 in C:\www\test\rundumtest.php on line 30
Kommentar
-
David, vielen Dank an Dich, letzendlich haben mir die Tips sehr weitergeholfen und die Ausgabe, EIngabe, SPeicherung von speziellen Zeichen klappt nun. Frag mich bitte nichts, warum es sooo lange nicht funktioniert hat
Jetzt geht's jedenfalls.
Nach 2 Tagen "was anderes machen", hab ich nochmal von 0 angefangen und konsequent ueberall in der MySQL DB "UTF8" genutzt dann noch
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
und
mysql_query("SET NAMES 'utf8'");
verwendet.
Prima... die Fragen hoeren aber natuerlich nicht auf
Kommentar
Kommentar