2017-07-29 52 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'文件中的差異。 –