Unicode文本混淆Mysql查询

时间:2016-05-13 14:41:06

标签: mysql csv unicode

我有一个PHP脚本,可以从gmail中提取附件(Unicode文本csv文件)并将它们上传到mysql数据库。所有这一切都很好。但是一旦进入数据库,我无法对数据运行最简单的查询。

如果我先将文件导入Excel,然后导出为CSV文件,那么一切正常,我可以查询并获得预期的结果。

我已经做了足够的阅读以理解(我认为)该问题与Unicode文本是UTF8或UTF16这一事实有某种关系,但是当我将表转换为其中任何一个时,数据都很好但是我仍然无法成功运行查询。

更新: 我在数据的lastrep列中有一个名为White的个体。我可以拉取相关记录的唯一方法是在字符之间使用通配符,如:

SELECT * FROM `dailyactual` WHERE `lastrep` like "%W%h%i%t%e%"

任何帮助将不胜感激。 吉姆

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

在utf8或utf8mb4 字符集中,'白色'将是' White' (十六进制57 68 69 74 65)。在utf16中,每个字符之间会有(有效)零字节;十六进制:0057 0068 0069 0074 0065

你能获得部分文件的十六进制转储吗?

如果您可以指定excel的输出,请执行此操作。否则将mysql的输入指定为utf16或编码所说的任何内容。由于有很多方法可以将csv文件放入mysql中,所以我不能更具体。