【发布时间】:2016-12-27 22:39:44
【问题描述】:
我正在导入在 linux 中保存为 utf8 的 csv,看起来不错。 mysql 数据库中的表是为 utf8 设置的,连接排序规则也是如此。我正在使用“CSV using LOAD DATA”进行导入,字符集为 UTF8。然而,角色正在改变。例如 ∙ 变成 â^™ 。是什么原因造成的?
【问题讨论】:
我正在导入在 linux 中保存为 utf8 的 csv,看起来不错。 mysql 数据库中的表是为 utf8 设置的,连接排序规则也是如此。我正在使用“CSV using LOAD DATA”进行导入,字符集为 UTF8。然而,角色正在改变。例如 ∙ 变成 â^™ 。是什么原因造成的?
【问题讨论】:
一种可能是您的 MySQL 数据库使用utf8 编码。这是因为 MySQL 中的utf8 不等同于一般的 UTF-8 编码,而只支持 UNICODE 字符的一个子集。例如,您不能对像 ∙(子弹运算符)这样的数学字符进行编码。
如果您想要完全支持所有 UNICODE 字符,您应该尝试改用 utf8mb4 编码,如 MySQL manual 所示:
utf8,Unicode 字符集的 UTF-8 编码,每个字符使用一到三个字节。
utf8mb4,Unicode 字符集的 UTF-8 编码,每个字符使用一到四个字节。
您还可以在manual 中查看有关 UNICODE 支持的完整讨论。
【讨论】:
E28899 在 MySQL 的 utf8 中可用; utf8mb4 不需要。