读取 CSV 文件中的外语字符


Reading foreign characters in a CSV file

我有一个脚本,它采用CSV文件并将每一行上传到数据库。但是,文件中的外来字符不仅显示错误,而且根本不显示。

例如,下面是一个"input"行,以及它在数据库中的读法:

"This café is amazing", "1000", "www.example.com"
"This caf", "1000", "www.example.com"

这是执行上传的脚本:

header("Content-Type: text/plain; charset=utf-8");
if (!isset($_POST['form_id'])) {
    header("Location: ./?error=form_id");
    exit();
}
$form_id = $_POST['form_id'];
$csv = $_FILES['csv_file'];
if ($csv['size'] > 0) {
    $handle = fopen($csv['tmp_name'], "r");
    require_once("db.php");
    $i = (!isset($_POST['csv_headers']) ? 1 : 0);
    while ($data = fgetcsv($handle, 1000, ',', '"')) {
        if ($i > 0) {
            $data[2] = str_replace(" + ", "+", $data[2]);
            if (strpos($data[3], "http") === false && $data[3] != "") {
                $data[3] = "http://" . $data[3];
            }
            mysql_query("INSERT INTO exhibitor_lists SET form_id = $form_id, company_name = '" . addslashes($data[0]) . "', country = '" . addslashes($data[1]) . "', stand_number = '" . addslashes($data[2]) . "', web_address = '" . addslashes($data[3]) . "', logo_file = '" . addslashes($data[4]) . "', added_date = NOW()");
        }
        $i++;
    }
} else {
    header("Location: ./?error=csv_file");
    exit();
}
mysql_close();
header("Location: ./?success=upload");
exit();

即使将内容类型设置为 header() ,我也遇到了问题。

上传之前将 CSV 文件保存为 UTF8。