2016-05-13 61 views
0

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

如果我第一次将文件导入Excel然后导出为CSV文件,然后所有工作正常,我可以查询并获得预期的结果。

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

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

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

任何帮助,将不胜感激。 Jim

回答

0

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

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

如果你可以指定excel的输出,那就这样做。否则,指定mysql的输入为utf16或任何编码所说的内容。由于有很多将csv文件导入到mysql的方法,我不能更具体。