MYSQL veritabanında utf8 kullanmayın utf8mb4 kullanın

MySQL, veritabanı iki çeşit utf-8 karakterini destekler. utf8 sadece ÇJVK (Çince, Japonca, Vietnam, Korece) kapsayacak ve karakter başına 1 ila 3 bayt kullanacak 65.536 kod noktasını saklayabilir. MySQL 5.5.3 sonra utf8mb4karekter kodlama ekledi, utf8mb4 (standart UTF-8'in yanı sıra) Unicode tarafından belirtilen herhangi bir karakteri doğrudan depolayabilir; utf32, 4 bayt(32bit) olarak sabit boyutta iken, utf8bm4 karakter kodlaması karakter başına karekterin türüne göre 1 ve 4 bayt yer ayırabilir.

Utf8mb3'ün takma adı utf-8'dir. Utf-8 kodlaması 2 bayt, 3 bayt, 4 bayt karakter olabilir, Ancak MySQL'in utf8 kodlaması sadece 3 bayt veriyi destekler, mobil cihazlarda emoji karekterler verileri ise 4 bayt karakterdedir. Emoji karekter verilerini doğrudan utf-8 kodlaması kullanan bir veritabanına eklerseniz , php gibi programlama dili bir hata bildirilir:

MySQL 5.5.3'ten sonra utf8mb4 karakter kodlamasını ekledi, mb4 en çok 4 bayt veriyi saklar. Basitçe utf8mb4, utf8'in bir üst kümesidir ve utf8 ile tamamen uyumludur.

Unicode'un 11 sürümüne göre 137000 karakteri var. ("A" ve "🦆", bu tür iki karakterdir.) En basit kodlama, UTF-32'de, her karakterin 4 byte (32bit) almasını sağlar. Halbuki normal harf karekterleri 1byte(8bit) bunlarada 4byte(32bit) hafıza ayırdığı için çok yer kapladığı ve sistemi yavaşlattığı için kullanılması tercih edilmez.

UTF-8'de, "A" gibi ortak karakterler 8 bit alan kaplarken, "🦆" gibi nadir karakterler 32 bit alan kaplar. Diğer karakterler 16 veya 24 bit kaplayabilir. Bunun gibi bir blog yazısı, UTF-8'de, UTF-32'de olduğundan dört kat daha az yer kaplar. Yani dört kat daha hızlı yüklenir.

MYSQL veritabanında unicode karekterler nasıl görünüyor.

unicode karekterler

MYSQL Unicode desteği

Unicode Standard, Temel Çok Dilli Düzlemdeki (BMP) karakterleri ve BMP'nin dışında bulunan ek karakterleri içerir. Bu bölümde MySQL'deki Unicode desteği açıklanmaktadır.

BMP karakterleri şu özelliklere sahiptir:

Tamamlayıcı karakterler BMP'nin dışında yer alır:

Unicode verilerini kodlamak için UTF-8 (Unicode Transformation Format) yöntemi, bir ila dört baytlık kodlama dizilerini açıklayan RFC 3629'a göre uygulanır. UTF-8 fikri, çeşitli Unicode karakterlerinin farklı uzunluklardaki bayt dizileri kullanılarak kodlanmasıdır:

MySQL bu Unicode karakter kümelerini destekler:

Not: Utf8mb3 karakter kümesi kullanımdan kaldırıldı ve gelecekteki MySQL sürümünde kaldırılacak. Bunun yerine utf8mb4 kullanın. Utf8 şu anda utf8mb3 için bir takma ad olsa da, bu noktada utf8, utf8mb4 için bir referans olacaktır. Utf8'in anlamı hakkında belirsizlikten kaçınmak için, utf8 yerine karakter kümesi referansları için utf8mb4 belirtmeyi düşünün.

Unicode Karakter Seti Genel Özellikleri


Karekter Seti Karakterler Bellek
utf8mb3, utf8 Sadece BMP 1, 2 veya 3 bayt
ucs2 Sadece BMP 2bayt
utf8mb4 BMP ve tamamlayıcı 1, 2, 3 veya 4 bayt
utf16 BMP ve tamamlayıcı 2 veya 4 bayt
utf32 BMP ve tamamlayıcı 4 bayt

Utf8mb4_general_ci, utf8mb4_unicode_ci Karşılaştırma arasındaki farklar nelerdir?


Doğruluk

utf8mb4_unicode_ci : Çok geniş bir dil aralığında doğru sıralama yapan, sıralama ve karşılaştırma için Unicode standardına dayanır.

utf8mb4_general_ci : Belirli dilleri veya karakterleri kullanırken olduğu gibi, bazı durumlarda istenmeyen sıralamaya neden olacak tüm Unicode sıralama kurallarını uygulayamaz.

Performans

utf8mb4_general_ci : İlgili kısayollar aldığından performans karşılaştırma ve sıralamada daha hızlıdır. Modern sunucularda, bu performans artışı tümüyle göz ardı edilebilir. Sunucuların bugünün bilgisayarlarına kıyasla CPU performansının Düşük olduğu bir zamanda tasarlandı.

utf8mb4_unicode_ci : Sıralama ve karşılaştırma için Unicode kurallarını kullanan, çok çeşitli dillerde doğru sıralama için ve çok çeşitli özel karakterler kullanırken oldukça karmaşık bir algoritma kullanır. Bu kurallar dile özgü sözleşmeleri dikkate almalıdır; Herkes karakterlerini 'alfabetik sıra' olarak adlandıracağımız bir düzene göre sıralamaz.

Latin (yani "Avrupalı") dillere gelince, Unicode sıralama ve MySQL'de sadeleştirilmiş utf8mb4_general_ci sıralama arasında çok fazla fark yoktur , ancak hala birkaç fark vardır:

Asya dilleri veya farklı alfabeleri olan diller gibi latin olmayan dillerde, Unicode sıralama ve basitleştirilmiş utf8mb4_general_ci sıralama arasında çok daha fazla fark olabilir. utf8mb4_general_ci kullanılan dile büyük ölçüde bağlıdır. Bazı diller için oldukça yetersiz olabilir.

Unicode ve unicode_520 harmanlamaları arasındaki farklar nelerdir?


Unicode karakter karşılaştırması için daha eski bir standardı takip ederken, unicode_520 karakter karşılaştırması için daha yeni Unicode standardını izler.

Geçmişte, bazı webmsterlar utf8mb4_general_ci , performans sıralamasını haklı çıkaracak kadar doğru sıralamanın önemli olduğu durumlar dışında kullanılması öneriyordu . Bugün, bu performans maliyetinin hepsi ortadan kalktı, ve geliştiriciler uluslararasılaşmayı daha ciddiye alıyorlar.

Php kullananlar, veritabanı bağlantısında karekter setini utf8mb4olarak ayarlamayı unutmayın.


$db->query("SET CHARACTER SET utf8mb4");

Kamil 24/12/2018

Her gün yeni bir şeyler çıkıyor bilgiler için teşekkürler.

Ahmet 15/09/2019

Hocam merahaba, günümüzü ele aldığımızda veritabanımızda hangi tipi kullanmalıyız. utf8mb4_general_ci mi? utf8mb4_unicode_520 mi? utf8mb4_unicode_ci mi? neden?

yönetici 15/09/2019

Ahmet, yapacağın sitenin özelliğine göre değişir. _general_ci uzantılı olan hız istersen kullan. Ama şimdiki bilgisayarların hızından dolayı fazla önemi kalmadı._unicode_ci, imoji karakterlerini tanır. Bunu kullanın. _unicode_520 mi? yeni unicode karakterlerinide tanır. Siten dünyaya hitap etmiyorsa(facebook, twitter gibi..) önceki önerdiğimi kullan.
Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır. Lütfen Yukarıda ki mesajları okuyun tekrar aynı soruları sormayın.

1834

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
  • Git
  • React
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML FORM OLUŞTURMA
  • CSS YATAY MENÜ YAPIMI
  • HTML RESİM EKLEME
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML DİV ve SPAN NEDİR?
  • HTML ARKAPLANA MÜZİK EKLEME
  • KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.