无法从 CSV 文件导入特殊字符
Can't import special characters from CSV file
我正在尝试将 CSV 文件导入 mysql table。整个数据库有一个 utf8_unicode_ci 编码。 CSV 文件还具有 UTF8 编码。但是当我尝试 运行 以下时,它只在 table 中显示空白字符而不是特殊字符:
$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
上面的table我只有一栏位置,csv文件的内容是:"ä";
我也尝试在 table 中将 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 中指定 cp1252(或 latin1) 和 以通过 PDO 进行连接。 (这比使用 SET NAMES
更好。)
原则:
- 客户端 (PHP) 正在获取数据的 latin1 编码。
- 客户端必须通知 MySQL 服务器数据的编码方式。(dsn)
- 如果 需要,客户端和服务器之间的对话将翻译字节 。如果您的专栏使用 utf8 而客户端是 latin1,则可能会发生这种情况。这种不一致是可以的。
我正在尝试将 CSV 文件导入 mysql table。整个数据库有一个 utf8_unicode_ci 编码。 CSV 文件还具有 UTF8 编码。但是当我尝试 运行 以下时,它只在 table 中显示空白字符而不是特殊字符:
$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
上面的table我只有一栏位置,csv文件的内容是:"ä";
我也尝试在 table 中将 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 中指定 cp1252(或 latin1) 和 以通过 PDO 进行连接。 (这比使用 SET NAMES
更好。)
原则:
- 客户端 (PHP) 正在获取数据的 latin1 编码。
- 客户端必须通知 MySQL 服务器数据的编码方式。(dsn)
- 如果 需要,客户端和服务器之间的对话将翻译字节 。如果您的专栏使用 utf8 而客户端是 latin1,则可能会发生这种情况。这种不一致是可以的。