我正在尝试将CSV导入MYSQL数据库。我的 CSV 包含 utf8 字符,例如 - 当我将这些字符导入我的数据库时,它们被替换为 ?标志着。
我尝试了以下方法:
a) 直接通过 PHPMYADMIN 导入b) 通过 Navicat 导入(作为 UTF8 导入)c) 使用开放式办公室/Mac Excel 2010将编码更改为UTF8(似乎也使它们成为问号)d) 另存为 CSV ms-dos(不确定它是否会有所作为)
谁能阐明我可能做错了什么?这与我的排序规则有关吗?
需要检查的几件事:
1) 确保表和/或行的排序规则utf8_general_ci(不区分大小写)或utf8_bin(二进制精确)。还有很多其他的,但根据我的经验,这两种中的一个是最常见的。
2) 确保您的 php 代码文件被编码为 UTF-8,没有字节顺序标记 (BOM)。这可以防止 PHP 丢失代码中的编码。
3)如果你在php中使用多字节函数,请确保你在php中设置了default_charset="utf-8.ini
4)确保您的数据库连接(可能是phpmyadmin中的设置,不确定,因为我不使用它)正在调用mysql_set_charset('utf8',$connection);就在打开连接之后,在发送查询之前。
是的,这与你的排序规则有关。您需要将其更改为 utf8_* 排序规则。
导入语句中声明字符集对我有用:
mysql> LOAD DATA INFILE '/usr/share/mysql/file.csv'
INTO TABLE Table1
CHARACTER SET utf8;