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