2017-07-29 49 views
1

我刚刚将我的服务器升级到了Debian 9.1,当我在它的时候,我也从PHP 5.6切换到PHP 7.我的应用程序停止工作,发现从数据库中检索数据时,数据似乎被自动转换为UTF-8。在这种特殊情况下,我将一些二进制数据存储在varchar(255)列(charset latin1)中,并且从Latin1到UTF8的转换当然会破坏二进制数据。我假设我应该创建varbinary列,但在这里我们是,它曾经在PHP5.6中正常工作。我想知道为什么这会发生变化,为什么我无法在任何地方找到有关此不兼容更改的任何信息,以及如何配置PDO以不变地返回数据。升级到PHP 7之后Mysql PDO automagic utf8转换

最佳,

阿诺

+0

它会给你一个关于它失败的原因的错误吗?试图以特定的方式访问它,还是仅仅在运行“select”时? – chris85

回答

1

我找到了解决自己:明确设置的字符连接到数据库时设置为在“latin1”(我以前忽略它)。仍然想知道为什么这会发生变化,为什么我在发布说明中错过了它。

+1

不确定 - 但我假设PDO使用'default_charset',如果你没有明确地在'dsn'中设置。 'default_charset'的默认值在5.6中已经是''UTF-8'' - 这就是为什么你在发布记录中找不到任何东西的原因。因此,如果你想知道为什么,检查你的'php.ini'文件中的差异。 –