Gerçekten MySQL ve UTF-8 için DAMLA VARCHAR den VARBINARY ve METİN geçmek gerekiyor PHP? Yoksa MySQL CHAR / METİN alanları ile sopa?
Belki. jason çekti ve ben fark başarısız olarak, MySQL UTF-8 sadece Temel Dilde Plane Haritayı gelmez. Manuel "Onlar [utf8 ve UCS2] ana dilde hemen hemen tüm karakterler için yeterli" olduğunu, ancak işaret eder Yani, muhtemelen güvenli ama sadece emin olmak için Basic Multilingual Plane içinde ne olduğunu kontrol etmek isteyebilirsiniz.
Orignal Answer
Sürece veritabanı UTF-8 kullanıyor gibi VARCHAR ve METİN ile sopa gerekir. (Bir yan not olarak, MySQL manual UTF-8 yerden tasarruf ile CHAR üzerinde VARCHAR kullanarak önerir., Bu olduğu gibi, bu VARCHAR ve TEXT kullanmak için güvenli olmalıdır.)
İşte güzel bir link PHP UTF-8 ile ilgili üzerinde bulunuyor. Eğer harmanlama hakkını ayarlarsanız MySQL UTF-8 ile çok iyi yapar. Öte yandan PHP sorunları çok var.
Tabii ki UTF-8 metin ve hiçbir VARBINARY bunun için gerekli saklamak için VARCHAR kullanımı güvenlidir.
VARCHAR kusursuz seçilen charCode göre karakterleri depolamak için gereken bayt sayısına uyum sağlayacak bir "değişken uzunluktaki KARAKTER" dir.
MySQL UTF-8 desteği sadece 3 byte ile sınırlıdır bir nedeni de vardır. Sen bu doğru anlamak için UTF-8 kodlama prosedürü hakkında konuşmak ilgili UTF-8 docs dalmak gerekir.
Ve son ama en az değil: UTF-8 hakkında emin değilseniz, her zaman opt-in yapabilirsiniz UTF-16. Bu kusursuz yine doğru bayt uzunluktaki adapte olacak gibi Ancak, yine VARCHAR kullanarak olacak.