2015-07-13 76 views
3

我試圖使用其unicode值()顯示錶情符號。但我得到了逃脫字符串\u00f0\u0178\u02dc\u20ac,它被解碼爲😀Unicode字符在客戶端顯示爲編碼ascii

我在我的項目中使用Mysql服務器和PHP 5.4。在mysql中,它被存儲爲😀。有什麼辦法來反轉義這一點,從PHP服務器

我試過了, iconv('ASCII//TRANSLIT', 'UTF-8', '😀');mb_convert_encoding($var, "US-ASCII", "UTF-8")和函數utf8_encode返回實際的Unicode()。不工作。

感謝

+1

您需要在MySQL中使用'utf8mb4'。 'utf8'只支持每個字符最多3個字節。 – Vatev

+0

[Here](http://apps.timwhitlock.info/unicode/inspect?s=%F0%9F%98%80)你可以看到它確實是4個字節。 – OIS

+0

@Vatev:Mysql通過將其分割爲4個獨立的字符來避開存儲問題。我正試圖重新調整它。由於我的數據庫非常龐大,如果沒有適當的驗證,我不能直接更改數據庫編碼。 –

回答

0

不知道你的數據庫的結構(請確保您使用的utf8作爲字符集爲你的表!),我認爲這個問題可能只是在顯示器側。嘗試通過向瀏覽器發送標題來啓動PHP腳本,讓它知道您將顯示UTF8字符,而不是西方編碼(ISO-8859-1)。

header('Content-type text/html; charset=UTF-8'); 
+0

我試了一下,仍然沒有工作。 –

+0

仍然是相同的輸入/輸出?我想知道你是否有數據庫中的流氓數據 - 你看過[這個答案](http://stackoverflow.com/a/2446818/294171),並試圖獲取(和出)表情符號數據庫沒有腐敗? (我嘗試在MySQL數據庫的'TEXT'和'BLOB'中存儲表情符號,並且都沒有問題。) –