0

我有两台服务器分别运行以下版本的 PHP 和 MySQL

服务器 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

特殊字符没有按原样插入,它显示以下方式It\'s 而不是 It's

所以我怀疑PHP版本是否有所作为?

我在两台服务器上使用同样配置的Codeigniter 。

4

1 回答 1

1

至于标题中提出的问题,原生 PHP 字符串只是字节字符串,因此支持 4 字节 UTF-8 字符的程度与它们支持更少字节的 UTF-8 字符的程度相同。多字节字符感知 PHP 函数似乎支持 4 字节字符,基于对本手册页的浏览。

正如评论中所指出的,您真正的问题是魔术引号在一台服务器上,但不在另一台服务器上。你应该把它关掉。如果您希望您的代码具有可移植性,那么值得花时间编写可以应对魔术引号打开或关闭的代码。

于 2014-05-04T17:03:39.670 回答