特殊字符未导入 mysql 数据库

Posted

技术标签:

【中文标题】特殊字符未导入 mysql 数据库【英文标题】:special charactors not importing into mysql database 【发布时间】:2016-12-27 22:39:44 【问题描述】:

我正在导入在 linux 中保存为 utf8 的 csv,看起来不错。 mysql 数据库中的表是为 utf8 设置的,连接排序规则也是如此。我正在使用“CSV using LOAD DATA”进行导入,字符集为 UTF8。然而,角色正在改变。例如 ∙ 变成 â^™ 。是什么原因造成的?

【问题讨论】:

【参考方案1】:

一种可能是您的 MySQL 数据库使用utf8 编码。这是因为 MySQL 中的utf8 不等同于一般的 UTF-8 编码,而只支持 UNICODE 字符的一个子集。例如,您不能对像 (子弹运算符)这样的数学字符进行编码。

如果您想要完全支持所有 UNICODE 字符,您应该尝试改用 utf8mb4 编码,如 MySQL manual 所示:

utf8,Unicode 字符集的 UTF-8 编码,每个字符使用一到三个字节。

utf8mb4,Unicode 字符集的 UTF-8 编码,每个字符使用一到四个字节。

您还可以在manual 中查看有关 UNICODE 支持的完整讨论。

【讨论】:

您应该更改数据库本身的设置,更改表的编码,而不是命令的导入设置。 参见 this 或类似的关于更改 MySQL 编码的帖子。 如果我更改了受影响列中的设置并使用该设置上传,它没有任何区别。我看不到改变整个数据库的方法,也许需要这样做。我之前使用 utf8 上传到这个数据库没有问题,尽管 csv 应该是在 windows 上制作的。 我找到了一个解决方法,但由于这个问题被否决了这么多,我将把它发布到其他地方,尽管我感谢 Renzo 的投入 “子弹运算符”,十六进制 E28899 在 MySQL 的 utf8 中可用; utf8mb4 不需要。

以上是关于特殊字符未导入 mysql 数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用 UTF-8 编码,具有特殊属性/外来字符的 CSV 文件在导入 MySQL (phpMyAdmin) 时不保留

特殊字符、sql、csv、phpmyadmin、excel

如何在mysql数据库中鎒moji特殊字符

mysql 有几个特殊字符的函数

mysql模糊查询固定某个字符

infobright中导入数据避免特殊字符问题