我們正在運行一個cron腳本,它從csv接收新用戶並將它們插入到我們的數據庫中。只要遇到名稱中帶有特殊字符的用戶,它就會失敗,但我不明白爲什麼,只要我能看到所有設置都應該起作用。mysql特殊字符 - 不正確的字符串值' xE1n'
這裏有一個名字它的失敗上的例子:
Siobhán
錯誤消息:
!! Incorrect string value: '\xE1n' for column 'firstname' at row 1
然後它試圖插入數據的var_dump有名稱爲:Siobh
所以它被刪除的特殊字符
這裏是我們的數據庫中的'char%'顯示變量的輸出:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
users表中的排序規則utf8_unicode_ci
名字和姓氏列的排序規則是utf8_unicode_ci
php腳本的首部設置了:
content-type: text/html; charset=utf-8
當我在變量傳遞到查詢之前對該變量運行mb_detect_encoding()
,它返回爲UTF-8
所以我在這裏想出了爲什麼它失敗...
有沒有人有任何想法,我們要去哪裏錯了?
感謝
您是否將CSV保存爲UTF-8? – DanFromGermany
csv由另一個部門的腳本自動生成。無論如何檢查? –
用你的文本編輯器打開。 Notepad ++符合我的需求。確保您的其他腳本也保存爲utf-8,並且您複製的所有數據都是utf-8編碼的。 – DanFromGermany