【问题标题】:Upload a CSV file to MySQL with utf-8 encoding in php在 php 中使用 utf-8 编码将 CSV 文件上传到 MySQL
【发布时间】:2019-05-27 01:28:16
【问题描述】:

我正在尝试使用以下代码将 csv 文件上传到 mySQL:

if(isset($_POST["submit"]))
{


header('Content-Type: text/html; charset=utf-8');


$ftype  = $_FILES['file']['type'];

if($ftype == "application/vnd.ms-excel" || $ftype == "APPLICATION/VND.MS-EXCEL"){ 


$file = $_FILES['file']['tmp_name'];



$handle = fopen("$file", "r");

$c = 0;
while(($filesop = fgetcsv($handle, 1000, ",")) !== false)
{

  htmlspecialchars($filesop, ENT_NOQUOTES, "UTF-8");



$fname = $filesop[0];
$lname = $filesop[1];
$famif = $filesop[2];
$lnmvb = $filesop[3];


$sql = mysql_query("insert into Alfon (Name,phone,Address,House,Identification) values ('$fname','$lname','$famif','$lnmvb','')");
$c = $c + 1;
}
if($sql){
echo "הקובץ הועלה בהצלחה 
$fname
$lname
$famif
$lnmvb
$file
";
} 
else
{
echo "שגיאה! אנא פרמט לסוג הקובץ הנכון.";
}

} else { echo "שגיאה בפורמט הקובץ $ftype";}

}


?>
<!DOCTYPE html>

        <title>ספר טלפונים דיגיטלי</title>
<body>
<form enctype="multipart/form-data" accept-charset="utf-8" method="post" role="form">
<div class="form-group">
<label for="exampleInputFile">File Upload</label>
<input type="file" name="file" id="file" size="150" accept-charset="utf-8">
<p class="help-block">Only Excel/CSV File Import.</p>
</div>
<button type="submit" class="btn btn-default" name="submit" value="submit">Upload</button>
</form>
</body>
</html>

问题是数据进入数据库而不是成为问号 (?) 的希伯来语文本, 你能做些什么来将文本编码成希伯来语? 如果您回答我的问题并帮助我,我将感谢您!

(我想强调的是,英文或数字的文本确实会进入有效的数据库,只有希伯来文本会出错......)

【问题讨论】:

  • 请解释“进入一个有效的数据库”。您的意思是成功插入包含希伯来语以外的文本的列吗?除了替换为希伯来语字符的? 字符外,每一行是否都正确插入?请edit您的问题向我们展示您的表定义(SHOW CREATE TABLE Alfon;

标签: php mysql unicode character-encoding


【解决方案1】:

使用LOAD DATA INFILE,并确保包含CHARACTER SET utf8mb4

也就是说,您可以丢弃所有的 PHP 代码,用这个 MySQL 命令替换它。

【讨论】:

    猜你喜欢
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多