角色我做了一個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_encode
或utf8_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_encode
,mb_*
功能也uft8_decode
要解決這個問題,但沒有任何工作,所以我不得不在我創建的另一個函數中去掉重音符號。現在它運作良好。
那麼......什麼會產生這個錯誤?編碼代碼很好,但我們需要更多信息 – Machavity
擺脫所有對'mb_ *'例程的調用。然後檢查http://stackoverflow.com/a/38363567/1766831 –
@Machavity @Rick James的「最佳實踐」我做得很好,但是當我更加關注代碼時,問題出現在我調用strtotime函數,所以我試着使用'uft8_encode','mb_ *'函數和'uft8_decode'來解決這個問題,但沒有任何工作,所以我不得不在我創建的另一個函數中去掉重音符號。現在它運作良好。 – itscaiqueck