MySQL 字元編碼和表情符號儲存
我們有一個iPhone 應用程序,它將表情符號傳輸到PHP 後端,然後將它們插入MySQL資料庫。然而,插入成功後,儲存的值顯示為空白。
純文字插入成功,但當包含表情符號時,僅插入文字。由於偶爾插入非表情符號且儲存需求較小,建議將欄位類型變更為 Blog(以容納影像資料),因此結果證明不適合。
解決方案:MySQL 字元集相容性
問題出在MySQL的字元編碼上。 iOS 表情符號主要利用超過 Unicode 表的基本多語言平面 (BMP) 的代碼點。例如,「張開嘴巴微笑著眼睛的笑臉」表情符號位於 U 1F604。
5.5 之前的 MySQL 版本僅支援 UTF-8 的 BMP,限制儲存為 U FFFF 下的字元。因此,MySQL 無法儲存 U 1F604 表情符號或其他「高字元」。
要解決此問題,請使用 MySQL 5.5 並選擇 utf8mb4(正宗 UTF-8)、utf16 或 utf32 作為列字元集。此外,請確保 PHP 和資料庫之間的 MySQL 連線使用相同的字元集。
對於低於 5.5 的 MySQL 版本,請使用 BLOB 欄位類型,該類型儲存原始位元組而不考慮「字元」。雖然這允許表情符號存儲,但它會損害文字搜尋和索引效率。
以上是為什麼我的表情符號在 MySQL 中消失了?的詳細內容。更多資訊請關注PHP中文網其他相關文章!