2012-04-14 28 views
8

SO üzerinde emoji ile ilgili tüm konuları okuduktan sonra, biraz yardım istemek zorunda kaldım. Soru neredeyse aynı gibi görünüyor: MySQL DB'ye PHP emoji ile gönderen bir iPhone Uygulaması var, örneğin "şemsiye" ve "bulut" gibi kayıtlardaki bazı simgeleri görebiliyorum ama başka değil (kızgın surat, güler yüz, ve diğer).MySQL ve PHP üzerinde Emoji: Neden bazı semboller evet diğer değil?

Neden bazı evet ve değil?

  • MySQL Harmanlama: utf8mb_unicode_ci
  • Tablo harmanlama: utf8mb_unicode_ci
  • Alan, varchar harmanlama: utf8mb_unicode_ci

PHP kurulumu:

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

sembolleri kayıt içine gösterdi değil soru işareti "?" olarak gösterilir

cevap

11

Bazı emoji'ler 3 bayt kullanılarak kodlanır. Bilgisayarlarınız emoji'yi destekliyorsa, 3 bayt emoji'si:

☺❤✨❕❔✊✌✋☝☀☔☁⛄⚡☎➿✂⚽⚾⛳ ♠ ♥ ♣ ♦ 〽☕⛪⛺⛲⛵✈⛽⚠ ♨1⃣2⃣3⃣4⃣5⃣6⃣7⃣8⃣9⃣0⃣ # ⃣⬆⬇⬅➡↗↖↘↙ ◀ ▶ ® © ® ™

Geri kalanlar 4 byte ile kodlanmıştır ve mysql'yi utf8mb4'e güncellemediğiniz sürece çalışmaz. Bir şekilde utf8mb4'e tam olarak yükseltme yapmadığınıza benziyor.

+0

Çok teşekkür ederim Jake, senin yönünü arayacağım. Şu an, hedef alanları ve tabloyu doğru harmanlamada dönüştürdüğümden eminim ama bir şeyleri kaçırmam gerekiyor. Bu konuyu güncelleyeceğim. Thanx – Fabrizio

+0

Doğruladım ve haklısın 3 byte emoji iyi temsil ediliyor. Neyi özlediğim, harmanlamayı değiştirmem gereken yer. Emoji'yi kaydetmem gereken alan utf8mb4_unicode_ci harmanlamasına sahip. Bu alanı içeren tablo utf8mb4_unicode_ci harmanlamasına sahip. Genel Ayarlar'da (phpMyAdmin) MySQL harmanlamasının utf8_general_ci olduğunu ve utf8mb4_unicode_ci'ye değiştirmeye çalıştığımda otomatik olarak önceki ayara geri döndüğünü görüyorum. Sorunun bu nedenle olup olmadığını bilmiyorum. Aramaya devam edeceğim. – Fabrizio

+3

@Fabrizio Yazılı [nasıl utf8'den 'utf8mb4'üne yükseltme konusunda ayrıntılı bir kılavuz] (http://mathiasbynens.be/notes/mysql-utf8mb4) - belki size yardımcı olur. –