Je développe un script qui prend en entrée un csv, puis lit le fichier et insère son contenu dans une base de données mysql. Le problème survient lors de l'insertion des données dans la base de données. Il convertit UMLAUT en caractères aléatoires.Insertion d'UMLAUT dans la base de données mysql à l'aide d'un script php
FYI - Ma base de données est en latin_german_ci. [J'ai aussi essayé de le changer en UTF8]
Je suis capable d'afficher des caractères UMLAUT dans les navigateurs web mais quand j'essaie de les insérer dans une base de données via une requête sql, il insère des caractères aléatoires.
<?php
function uploadCsv($filename){
echo "filename - ".$filename."<br/>";
if(isset($filename) || $filename == ""){ // return with an error msg.
}else{
$pos = stripos($filename, ".csv");
if($pos == 0 || $pos != strlen($filename)-4){
//echo "invalid format";
return ;
}
}
set_time_limit(0);
$error = "";
$row = 0;
$handle = fopen($filename, "r");
//echo "<br/>".$filename."<br/>";
//echo "<br/>".$handle."<br/>";
if($handle == null){
return "unable to process";
}
while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {
if ($row == 0) {
// this is the first line of the csv file
// it usually contains titles of columns
// do nothing.
$num = count($data);
//echo "num - ".$num."<br/>";
if($num != 2){
// echo "returning back";
return "invalid CSV format.";
}
}
// this handles the rest of the lines of the csv file
$num = count($data);
$id = $data[0];
$inserQuery = "";
$inserQuery = "INSERT INTO `table` (
`ID` ,
`Productname`
)
VALUES (";
for ($c=0; $c < $num; $c++) {
if($c==0){
$inserQuery .= " '". utf8_encode($data[$c])."'" ;
}else{
$inserQuery .= ", '". utf8_encode($data[$c]) ."'" ;
}
}
$inserQuery .= ");";
echo $inserQuery."<br/>";
mysql_query($inserQuery);
if(mysql_affected_rows() == -1 || mysql_affected_rows() <1){
echo "error<br/>";
}else{
echo "row inserted - ".$row." with ID = ".$id." <br/>";
}
$row++;
}
fclose($handle);
return "1";
}
?>
S'il vous plaît aider ....
grâce
Et vous devriez également vérifier l'encodage du fichier CSV et de vos paramètres régionaux ... Parce que le manuel PHP de fgetcsv indique: * Remarque: Le réglage des paramètres régionaux est pris en compte par cette fonction. Si LANG est par exemple En_US.UTF-8, les fichiers codés sur un octet sont mal lus par cette fonction. * – wimvds
Comment modifier les paramètres régionaux du fichier CSV sous Windows? – mudit
Dépend du programme que vous avez créé avec le fichier CSV, par ex. avec Excel vous êtes coincé avec le jeu de caractères par défaut (au moins autant que je sache). –