我写了一个基于php和mysql的应用程序。 我在运行在QNAP-NAS(开发)上的Web服务器上进行开发,并将代码复制到另一个QNAP-NAS(生产)上。 突然,我在生产型NAS上遇到了一个字符集问题(全部是utf8),而在dev-NAS上却没有了。
我将代码1:1从dev复制到生产环境,并插入了dev-DB的mysql-dump,因此db和代码应该完全相同。
但是,当我插入“ü”时,我在dev上得到了正确的"ü"
在生产上得到了"ü"
。
抱歉,提供的信息很少,但我只是不知道从哪里开始:(
两个HTML页面当然都是“ charset = utf-8”,两个数据库都相同, 我用两种方式验证输入的正确性
$title = filter_input(INPUT_POST, 'title', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
任何有关该问题的提示都非常欢迎,我有点迷茫。我还应该提供其他有用的信息吗?
预先感谢, 帕科
编辑:
我将字符集添加到了我的mysql字符串'mysql:host=localhost;dbname=mdt;charset=utf8'
中
但没有效果。
我发现,我的开发环境运行于PHP 5.6.36,而生产环境运行于PHP 5.5.38
编辑2:
我更改了FILTER_SANITIZE_FULL_SPECIAL_CHARS
to htmlentities
,它的工作原理是:)
这是否意味着是不同的PHP版本导致了sanitize函数的不同行为?