hi leute,
ich hab da ein recht nerviges problem in bezug auf sonderzeichen, ferner umlauten beim import einer csv dabei in die mysql datenbank.
Letztlich werden die "gängigen" Sonderzeichen zwar importiert und passend gespeichert, aber speziellere Dinge zu "?" konvertiert.
Sie wird auch "Śmiertelny" halt "?miertelny"
Da ich jetzt noch nicht weiß, welche infos fürs debugging nötig sind, hier schon mal die groben details:
doctype ist utf8, mysql collation ist utf8_general_ci.
Des weiteren setze ich folgendes im Anfang des Scripts:
die upload routine ist simple gehalten und speichert die csv als temp.csv aufm ftp:
hier ist die erste grobe routine zum verarbeiten der csv daten:
und hier noch fix der import der csv daten in die datenbank:
im großen und ganz läuft das ... eben mit den ganz fiesen sonderzeichen gehts nicht voran!
hat jmd von euch mal nen tip, woher der wind weht?
grüße,
jon
ich hab da ein recht nerviges problem in bezug auf sonderzeichen, ferner umlauten beim import einer csv dabei in die mysql datenbank.
Letztlich werden die "gängigen" Sonderzeichen zwar importiert und passend gespeichert, aber speziellere Dinge zu "?" konvertiert.
Sie wird auch "Śmiertelny" halt "?miertelny"
Da ich jetzt noch nicht weiß, welche infos fürs debugging nötig sind, hier schon mal die groben details:
doctype ist utf8, mysql collation ist utf8_general_ci.
Des weiteren setze ich folgendes im Anfang des Scripts:
PHP-Code:
header('Content-Type: text/html; charset=UTF-8');
mysql_query('SET NAMES `UTF-8`') ;
PHP-Code:
if($error=="1") {
@unlink($file);
} else {
if (file_exists($folder.$name)) { unlink($folder.$name) ; }
if (!@move_uploaded_file($file,$folder.$name)) {
$global['form']['error'] = 'Die Datei konnte nicht hochgeladen werden. Bitte wenden Sie sich an den Support<br /><br />' ;
} else {
chmod ($folder.$name, 0755);
$global['form']['error'] .= '<strong>Datei hochgeladen.</strong><br />' ;
header('Location: '.$global['path'].'?admin=import&b='.$ext) ;
}
}
PHP-Code:
$tpl = file_get_contents('./tpl/import.html') ;
$csv = file_get_contents('./../temp/temp.'.$_GET['b']) ;
#$csv = utf8_decode($csv) ;
if (!preg_match("#\n#s", $csv)) {
$csv = preg_replace("#\r#s", "\n", $csv) ;
} else {
$csv = preg_replace("#\r#s", "", $csv) ;
}
$csv = preg_replace("#\"#s", "", $csv) ;
$csv = explode("\n", $csv) ;
PHP-Code:
for ($i = 1; $i <= $csv_i; $i++) {
$sql = 'INSERT INTO `datasets` (
`id`,
`author`,
`year`,
`title`,
`src`,
`link`,
`reference_src`,
`languages`,
`country`,
`doctype`,
`timestamp`
) VALUES (
"'.mysql_real_escape_string($data[$i][$data_keys['id']]).'",
"'.mysql_real_escape_string($data[$i][$data_keys['author']]).'",
"'.mysql_real_escape_string($data[$i][$data_keys['year']]).'",
"'.mysql_real_escape_string($data[$i][$data_keys['title']]).'",
"'.mysql_real_escape_string($data[$i][$data_keys['src']]).'",
"'.mysql_real_escape_string($data[$i][$data_keys['link']]).'",
"'.mysql_real_escape_string($data[$i][$data_keys['reference_src']]).'",
"'.mysql_real_escape_string($data[$i][$data_keys['languages']]).'",
"'.mysql_real_escape_string($data[$i][$data_keys['country']]).'",
"'.mysql_real_escape_string($data[$i][$data_keys['doctype']]).'",
NOW( )
);' ;
mysql_query($sql) ;
$csv_k++ ;
}
hat jmd von euch mal nen tip, woher der wind weht?
grüße,
jon
Kommentar