我正在尝试将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 ();
}
提前致谢
答案 0 :(得分:1)
截断表明它不是utf8。你说是cp1252?检查SHOW COLLATION LIKE 'CP125%';
如果您没有看到cp1252,那么latin1
可能就是您所需要的。
更改LOAD ...
以在dsn中指定cp1252(或latin1)和以通过PDO进行连接。 (这比使用SET NAMES
要好。)
原则: