gpt4 book ai didi

php - 无法从 CSV 文件导入特殊字符

转载 作者:行者123 更新时间:2023-11-29 02:57:25 25 4
gpt4 key购买 nike

我正在尝试将 CSV 文件导入到 mysql 表中。整个数据库都有一个utf8_unicode_ci编码。 CSV 文件还具有 UTF8 编码。但是当我尝试运行以下命令时,它只在表格中显示空白字符而不是特殊字符:

$query = "LOAD DATA LOCAL INFILE 'mycsvfile.csv' INTO TABLE location_temp 
CHARACTER SET UTF8
FIELDS TERMINATED BY ';'
ENCLOSED BY '\"'
LINES TERMINATED BY '\r\n'";
$parameters = array ();
$connection->QueryExec ( $query, $parameters ); //Connection class

在上表中我只有一列位置,csv文件的内容是:"ä";

我还尝试将 csv 的值更改为 "testthät"; 然后在表中出现:testth 它只是在特殊字符之后跳过。

编辑:这就是我创建数据库连接的方式:

try {
$this->conn = new PDO ( "mysql:host=" . $host . ";charset=utf8;dbname=" . $database, $user, $pass );
$this->conn->exec ( "set names utf8" );
} catch ( PDOException $e ) {
echo "Something went wrong while connecting to the database: " . $e->getMessage ();
}

提前致谢

最佳答案

截断说明不是utf8。你说是cp1252?检查 SHOW COLLATION LIKE 'CP125%'; 如果您没有看到 cp1252,那么 latin1 可能就是您需要的。

更改 LOAD ... 以在 dsn 中为通过 PDO 的连接指定 cp1252(或 latin1)。 (这比使用 SET NAMES 更好。)

原则:

  • 客户端 (PHP) 正在获取数据的 latin1 编码。
  • 客户端必须通知MySQL服务器数据的编码方式。(dsn)
  • 如果需要,客户端和服务器之间的对话将翻译字节。。如果您的专栏使用 utf8 而客户端是 latin1,则可能会发生这种情况。这种不一致是可以的。

More discussion

关于php - 无法从 CSV 文件导入特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28997543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com