2012-04-14 108 views
8

在閱讀了關於表情符號的所有主題之後,我就要求提供一些幫助。 問題似乎幾乎是一樣的:我有一個iPhone應用程序通過PHP表情符號發送到MySQL DB,我可以在記錄上看到一些符號,例如「傘」和「雲」,但其他不是(生氣的臉,笑臉和其他)。表情符號在MySQL和PHP:爲什麼一些符號是其他不是?

爲什麼有些是和其他不?

  • MySQL的整理:utf8mb_unicode_ci
  • 表歸類:utf8mb_unicode_ci
  • 領域,VARCHAR歸類:utf8mb_unicode_ci

PHP設置:

mysql_query("SET CHARACTER SET utf8mb4"); 
    mysql_query("SET NAMES utf8mb4"); 

的符號不顯示該記錄內顯示爲問號「?」

回答

11

一些表情符號使用3個字節進行編碼。如果您的計算機支持的表情符號,這裏有3個字節的表情符號:

☺❤✨❕❔✊✌✋☝☀☔☁⛄⚡☎➿✂⚽⚾⛳♠♥♣♦〽☕⛪⛺⛲⛵✈⛽⚠ ♨1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣0⃣#⃣⬆⬇⬅➡↗↖↘↙◀▶⏪⏩♿㊙㊗✳✴♈♉♊♋♌♍♎♏♐♑♒♓⛎⭕❌©®™

其餘使用4個字節的編碼除非你將mysql更新爲utf8mb4,否則將無法工作。聽起來你沒有以某種方式完全升級到utf8mb4。

+0

非常感謝你傑克,我會在你的方向搜索。現在我非常確定我將目標字段和表格轉換爲正確的排序規則,但我必須錯過一些東西。我會更新這個話題。 Thanx – Fabrizio 2012-05-02 19:41:12

+0

我已經驗證,你是正確的3個字節的表情符號表示確定。我想念的是我需要改變整理的地方。我必須記錄表情符號的字段已經得到utf8mb4_unicode_ci整理。包含該字段的表已獲得utf8mb4_unicode_ci排序規則。在常規設置(phpMyAdmin)中,我看到MySQL整理是utf8_general_ci,當我嘗試更改爲utf8mb4_unicode_ci時,它似乎自動回到之前的設置。我不知道問題是否出於這個原因。我會繼續搜索。 – Fabrizio 2012-05-03 12:20:08

+3

@Fabrizio我寫(http://mathiasbynens.be/notes/mysql-utf8mb4)如何從'utf8'升級到'utf8mb4'的詳細指南] - 也許它可以幫助你。 – 2012-08-07 06:53:33