【问题标题】:Cannot get certain characters imported into MySQL [duplicate]无法将某些字符导入 MySQL [重复]
【发布时间】:2018-04-18 14:19:35
【问题描述】:

这个问题简直要死我了,我无法在网上找到一个单一的解决方案!

我正在尝试通过 Navicat 的导入向导将以下文本从 CSV 导入 MySQL 表:

L154 – TRAINING WARRANTY

连字符是一个宽连字符,到目前为止,我已经设法将它作为问号导入,或者作为内部带有问号的黑色菱形导入。 £ 符号和其他特殊字符也是如此。

每个人都在谈论 UTF-8。到目前为止,我已经尝试过:

在 Excel 中保存 CSV,单击工具 > Web 选项 > 编码:UTF-8

右键单击数据库并单击编辑。将 Char 设置为 utf8 Unicode 和排序规则:utf8_general_ci

我已经“设计”了表格并将上面的 2 个选项设置为完全相同。

我已经编辑了有问题的 varchar 字段,并将相同的 2 个字段再次设置为上述 2 种类型。

但我的连字符无法正确导入。

如果知道如何一劳永逸地导入包含 £ 符号和其他特殊字符的数据,那就太好了。

【问题讨论】:

  • 我对表格和 varchar 字段使用“latin1_swedish_ci”,只是尝试保存“£”,它对我有用。
  • 这不是“连字符”,而是“破折号”。十六进制(UTF-8 格式)为 3 个字节:E28093。如果可以得到csv文件的十六进制,请确认。同时,表/列不要使用latin1,使用utf8(或utf8mb4)。

标签: php mysql csv utf-8 character-encoding


【解决方案1】:

您可以使用htmlentities() 以编码形式存储这些符号,例如

£ 将是 £ 将是 –,通过使用:

echo htmlentities('£');

在检索时,只需使用html_entity_decode() Like:

echo html_entity_decode('£'); // output £

编辑: 正如 cmets 中所讨论的,您如何尝试从 CSV 文件导入数据。您必须更改 CSV 文件的编码,这可以使用 Notepad++ 完成,通过转到 Encoding->Encode in UTF-8

【讨论】:

  • 嗨兆丰。在页面上输出数据之前,我不会使用 PHP。它是通过导入存储的,因此 htmlentities 不会在这里发挥作用。
  • 我已在表格选项中将 Char Set 设置为 UTF8 - 并且该表格中的每个 text/varchar 字段都设置为 utf8,但我仍然得到钻石。这似乎是不可能的情况!
  • 只是添加到此 - 此查询有效并且连字符正确插入。所以它似乎很难处理 CSV:insert into table_name SET Name = 'L154 – TRAINING WARRANTY'
  • 成功了!!!!不敢相信。我可以忍受每次都重新保存导入。太感谢了。您可以将其添加为新答案,我会投票吗?
  • 我导出到 XLSX。在 Excel 中打开,编辑文件,保存为 CSV。在 NotePad++ 中打开 CSV,转换为 UTF-8 - 成功导入数据库。我对这个过程很满意!
猜你喜欢
  • 2021-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多