2014-03-06 34 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字节字符。

正如评论中指出的那样,你真正的问题是魔术引号在一台服务器上,而另一台服务器上却没有。你应该关掉它。如果你想让你的代码具有可移植性,那么花时间写代码可以应对魔术引号的开启或关闭是值得的。