PoolByte

utf8mb4 ve collation: Türkçe karakter, emoji ve metin eşleştirme

· PoolByte Technology

utf8mb4 ve collation: Türkçe karakter, emoji ve metin eşleştirme

Bir ürün adında emoji kayboluyor, Türkçe “I” ve “ı” beklenmedik eşleşiyor veya kullanıcı adları bazen yinelenmiş sayılıyor olabilir. Bu sorunlar yalnız font seçimiyle açıklanmaz. Veritabanındaki karakter kümesi, bağlantı kodlaması ve karşılaştırma düzeni birlikte incelenmelidir.

Karakter kümesi ile collation farklı kararlardır

Karakter kümesi hangi karakterlerin saklanabildiğini ve nasıl kodlandığını belirler. Collation ise metinlerin karşılaştırılması ve sıralanması gibi davranışları etkiler. MySQL utf8mb4 açıklaması, tam Unicode desteği açısından bu karakter kümesinin kapsamını anlatır.

Veritabanı varsayılanını değiştirmek bütün mevcut tablo ve sütunların otomatik dönüştüğü anlamına gelmez. Uygulamanın bağlantı ayarını, tablo tanımını ve ilgili sütunu ayrı kontrol edin. Aynı sayfada bazı alanların doğru, bazılarının bozuk görünmesi bu katman farkından kaynaklanabilir. Hata örneğini ham veri ile ekranda gösterilen değer üzerinden karşılaştırın.

“Aynı metin” hangi kurala göre?

Collation adlarında büyük küçük harf ve aksan duyarlılığı gibi özellikler bulunabilir. MySQL adlandırma kuralları, bu ayrımları açıklar. Bir arama kutusunda kullanıcıya yardımcı olan duyarsız eşleşme, bir benzersiz kimlik alanında istenmeyen sonuç verebilir.

Örneğin ürün aramasında farklı yazımları yakın kabul etmek yararlı olabilir. Buna karşılık dış sistemden gelen sabit ürün kodunda karşılaştırmanın tam olması gerekebilir. Kullanıcı adları, e-posta normalizasyonu ve görünen isimler için tek bir kuralı düşünmeden paylaşmayın. Uygulama düzeyinde yapılan normalizasyonun veritabanındaki benzersizlik kuralıyla uyumlu olması gerekir.

Türkçe ve çok dilli deneme kümesi hazırlayın

Yalnız İngilizce kısa kelimelerle test yapmak bu sorunları yakalamaz. Türkçe noktalı ve noktasız harfleri, Arapça metni, birleşik karakter örneklerini ve emoji içeren alanları deneyin. Saklama, yeniden okuma, sıralama ve arama adımlarının her birini kontrol edin. Dosyaya aktarılıp yeniden alındığında sonucun korunup korunmadığına da bakın.

Görünen karakter sayısıyla bayt uzunluğu aynı değildir. Bir alanın uzunluk sınırı, indeks sınırı veya dış servis kısıtı farklı ölçüler kullanabilir. Hata mesajını “çok uzun” diye genellemek yerine hangi sınırın aşıldığını açıklayın. Uygulama, kullanıcıya görünen karakteri ortadan bölerek kısaltmamalıdır.

Canlı veride dönüşümden önce

  • Bozuk görünen verinin gerçekten yanlış mı saklandığını belirleyin.
  • Mevcut benzersiz indekslerde yeni kurala göre çakışma tarayın.
  • Tablo ve bağlantı ayarlarını kaydedin.
  • Temsili bir kopyada dönüşüm ve geri okuma testi yapın.
  • Metin dışa aktarma ve entegrasyonları da aynı denemeye katın.

Zaten bozulmuş metni yalnız karakter kümesini değiştirerek her zaman kurtaramazsınız. Yanlış dönüşümü tekrar uygulamak veriyi daha da bozabilir. Çok dilli site planında çeviri kadar veri saklama kurallarının da tanımlanması, yabancı müşterilerin isim ve içeriklerinin doğru görünmesine yardımcı olur.