2016-05-13 89 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的方法,我不能更具體。