我有一个PHP脚本,可以从gmail中提取附件(Unicode文本csv文件)并将它们上传到mysql数据库。所有这一切都很好。但是一旦进入数据库,我无法对数据运行最简单的查询。
如果我先将文件导入Excel,然后导出为CSV文件,那么一切正常,我可以查询并获得预期的结果。
我已经做了足够的阅读以理解(我认为)该问题与Unicode文本是UTF8或UTF16这一事实有某种关系,但是当我将表转换为其中任何一个时,数据都很好但是我仍然无法成功运行查询。
更新: 我在数据的lastrep列中有一个名为White的个体。我可以拉取相关记录的唯一方法是在字符之间使用通配符,如:
SELECT * FROM `dailyactual` WHERE `lastrep` like "%W%h%i%t%e%"
任何帮助将不胜感激。 吉姆
答案 0 :(得分:0)
答案 1 :(得分:0)
在utf8或utf8mb4 字符集中,'白色'将是' White' (十六进制57 68 69 74 65
)。在utf16中,每个字符之间会有(有效)零字节;十六进制:0057 0068 0069 0074 0065
。
你能获得部分文件的十六进制转储吗?
如果您可以指定excel的输出,请执行此操作。否则将mysql的输入指定为utf16或编码所说的任何内容。由于有很多方法可以将csv文件放入mysql中,所以我不能更具体。