2013-10-11 89 views
0

我有null當記錄包含數據庫中的特殊字符時返回。獲取utf8_general_ci從特定字符的MySQL數據庫varchar記錄返回null

舉一個例子的簡單數據庫看起來是這樣的:

ID  Integer  PRIMARY KEY, AUTO_INCREMENT 
Name  varchar(20) NOT NULL, utf8_general_ci 

ID  Name 
1   Blop 
2   Blaap 
3   Bluup 

了,所以似乎不支持的例如「U」的使用變音,所以對於這個例子,只是想象'Bluup'有兩個你的變音符號

如果我運行查詢GET * FROM names後來我收到我的$.get功能結果:

[object] 
    1 [object] 
     id : 1 
     name : Blop 
    2 [object] 
     id : 2 
     name : Blaap 
    3 [object] 
     id : 3 
     name : null 

當使用var_dump傾銷的數據,我發現這個結果目前也已經null

因此,PHP不喜歡得到奇怪的字符或者MySQL甚至不會將它們返回給PHP。過去幾個小時我一直在尋找答案,但無法找到答案。

我不能去和手動,或與查詢,更改所有具有特殊字符的記錄,因爲數據不是我的更改。

有沒有辦法解決這個問題?

回答

1

嘗試MySQL的連接上設置:

SET NAMES utf8; 

爲了更好地理解編碼是如何工作的,我強烈建議this article

+0

你是什麼意思與「MySQL的連接上設置」,你的意思,它在創建到數據庫的連接時必須包含它,以便它對所有查詢使用'utf8'?順便說一句,好文章:) – Nukeface

+1

每次連接到數據庫後運行查詢'SET NAMES utf8;'。如果這更容易,也可以將其設置爲服務器上的默認值。 –

+0

像@MichaelMior很好地指出:在php當你創建mysql連接時,應該是你執行的第一個查詢 – Stephan

相關問題