2016-12-16 22 views
0

角色我做了一個API修身框架我從中進行編碼utf8mb4_unicode_ci的MySQL數據庫獲取數據。畸形的UTF-8的超薄框架V3

當我編程時,我正在使用PHP v7。要獲得一個正確的方式數據,我在我的API代碼的頂部插入下面的代碼:

setlocale(LC_ALL, "pt_BR", "pt_BR.utf-8", "pt_BR.utf-8", "portuguese"); 
mb_internal_encoding('UTF-8'); 
mb_http_output('UTF-8'); 
mb_regex_encoding('UTF-8'); // I need it because I use mb_ereg_replace to replace with a regex in UTF-8. 

有了正確的方式返回這一切的數據,所以我並不需要使用utf8_encodeutf8_decode功能。但安裝它的官方服務器,裏面有PHP V5.6裏面後,我得到了:

Slim Application Error 
The application could not run because of the following error: 

Details 

Type: RuntimeException 
Code: 5 
Message: Malformed UTF-8 characters, possibly incorrectly encoded 
File: Slim/Http/Response.php 
Line: 318 

我不知道如何解決它...我真的認爲這是PHP V5中的一個問題。 6,也許?或苗條框架?還是有另一種方式在PHP v5.6中使用utf8mb4_unicode_ci ?!

編輯

我所做的一切權利,但是當我用更多的關注尋找代碼是,當我打電話的strtotime功能的問題,所以我試圖用uft8_encodemb_*功能也uft8_decode要解決這個問題,但沒有任何工作,所以我不得不在我創建的另一個函數中去掉重音符號。現在它運作良好。

+0

那麼......什麼會產生這個錯誤?編碼代碼很好,但我們需要更多信息 – Machavity

+0

擺脫所有對'mb_ *'例程的調用。然後檢查http://stackoverflow.com/a/38363567/1766831 –

+0

@Machavity @Rick James的「最佳實踐」我做得很好,但是當我更加關注代碼時,問題出現在我調用strtotime函數,所以我試着使用'uft8_encode','mb_ *'函數和'uft8_decode'來解決這個問題,但沒有任何工作,所以我不得不在我創建的另一個函數中去掉重音符號。現在它運作良好。 – itscaiqueck

回答

0

在我的index.php我寫道:

$pdo = new PDO('mysql:host=localhost; dbname=dbname; charset=UTF8', user, pass); 

它爲我工作。

+1

請爲您的答案添加更多解釋,例如您的答案如何與原始問題相關 –