我正在开发一个脚本,它以csv作为输入,然后读取文件并将其内容插入到mysql数据库中。因此,在将数据插入数据库时会出现问题。它将UMLAUT转换为随机字符。
仅供参考 - 我的数据库位于latin_german_ci中。 [我也尝试将其改为UTF8]
我可以在Web浏览器中显示UMLAUT字符,但是当我尝试通过sql查询将它们插入数据库时,它会插入随机字符。
<?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";
}
?>
请帮忙......
感谢
答案 0 :(得分:2)
答案 1 :(得分:0)
为什么在拉丁语数据库中使用utf8_encode()?什么是您的网页编码(HTTP内容类型和HTML元标记)?什么是源代码的编码(您可以在编辑器中配置它)?您使用哪个程序来查看数据库以及使用哪种编码?