2014-03-06 35 views
0

我有兩臺服務器分別運行PHP和MySQL的以下版本是utf8mb4支持PHP 5.2.7

服務器1:

PHP version 5.2.7 
MySQL: 5.5.36 

服務器2:

PHP version 5.4.23 
MySQL: 5.5.36 

隨着MySQL版本的更新,MySQL可以處理utf8mb4_general_ci

因此,如果是服務器2所有特殊字符,如',''等插入數據庫中沒有換碼斜槓。

但是,在如來服務器1

的特殊字符不插入,因爲它是,它顯示了以下方式它\而不是它的

所以我懷疑是PHP版本使差異?

我正在使用Codeigniter在兩臺服務器上均勻配置。

+2

請確保魔術引號已關閉.. – reikyoushin

+0

感謝您的回覆@reikyoushin雅我發現magic_quote_gpc是在服務器1上,但在服務器2上找不到magic_quotes_gpc。這是問題嗎? –

+0

@ Ramaraju.d'magic_quotes_gpc'在服務器2上找不到,因爲「此功能從PHP 5.3.0開始已經被拒絕,從PHP 5.4.0開始刪除」。因此,您可以在PHP版本低於5.4的版本中禁用它(例如作爲5.2.7)你在服務器1上它是一個5.4或更高版本中的非問題(如服務器2上),因爲它在PHP 5.4中不再存在。 http://www.php.net/manual/en/security.magicquotes.php – JakeGould

回答

1

至於標題中提到的問題,本地PHP字符串只是字節字符串,因此支持4字節的UTF-8字符的程度與它們支持字節較少的UTF-8字符的程度相同。基於對this manual page的一瞥,支持多字節字符的PHP函數似乎支持4字節字符。

正如評論中指出的那樣,你真正的問題是魔術引號在一臺服務器上,而另一臺服務器上卻沒有。你應該關掉它。如果你想讓你的代碼具有可移植性,那麼花時間寫代碼可以應對魔術引號的開啓或關閉是值得的。