我想使用php和mysql将csv文件导入数据库,我的csv文件有utf8字符,但是当我导入它时,它不支持utf8,我无法正确导入数据。请帮帮我怎么做?
/*CSV FILE Validation Start*/
if (!empty($_FILES['excelFile']['name'])) {
$errFlg=0;
$errMsg='';
$valid_document_formats = array("csv");
$valid_document_size=524288; // 512 KB
$documentName = $_FILES['excelFile']['name']; // Actual Document Name
$documentSize = $_FILES['excelFile']['size']; // Actual Document Size
list($txt, $ext) = explode(".", $documentName); // Get Actual Document Formate
if (in_array($ext, $valid_document_formats)) { // Check Document Formate
if ($documentSize < $valid_document_size) { // Check Document Size
$new_doc_name = time() . "." . $ext; // Document New Name
$tmpDoc = $_FILES['excelFile']['tmp_name'];
}else{
$errMsg= "Document size max 512 KB"; // Error Message for max size
$errFlg=1;
}
}else{
$errMsg= "Invalid Document format"; // Error Message for Invalid format size4
$errFlg=1;
}
} else{
$errMsg= "Please select an Document";
$errFlg=1;
}
/*CSV FILE Validation End*/
/*CSV FILE Import Start*/
if(!$errFlg){
$uploadedDocPath='excel_file/'; // folder name for document upload
if(move_uploaded_file($tmpDoc, $uploadedDocPath.$new_doc_name)){
if(($handle = fopen("excel_file/".$new_doc_name , "r")) !== FALSE)
{
$fileAdded=true;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
$num = count($data);
//echo var_dump($data);
mysql_query("SET NAMES UTF8");
echo $query="INSERT INTO csv_data(name,phone,city) values('".$data[0]."','".$data[1]."','".$data[2]."')";
mysql_query($query);
}
fclose($handle);
$csvname = "excel_file/".$new_doc_name;
unlink($csvname);
}
}else{
$errMsg= "Please Try after some time";
$errFlg=1;
}
}
/*CSV FILE Import End*/
如何使用utf8导入?
答案 0 :(得分:0)
Csv可能是UTF-8,但你的文件将在某些windows- *编码(或ISO *)中。简单的方法是将数据转换为UTF-8。使用iconv功能执行此任务。
echo $query="INSERT INTO csv_data(name,phone,city) values('". iconv('cp1250', 'utf-8', $data[0]) ."','". iconv('cp1250', 'utf-8', $data[1]) ."','". iconv('cp1250', 'utf-8', $data[2])."')";
您必须找到csv的编码。对我来说这是cp1250(windows-1250)。
编辑:您也可以尝试更改(如果iconv无效)
mysql_query("SET NAMES UTF8");
到
mysql_query("SET NAMES 'utf8'");
并检查您的PHP脚本是否也是UTF-8。