utf8 ve latin1 arasındaki fark nedir?
utf8 ve latin1 arasındaki fark nedir?
Yanıtlar:
UTF-8 dünya hakimiyeti için hazırlanmıştır, Latin1 değildir.
Latin1 kodlamasını kullanarak Çince, Japonca, İbranice, Rusça vb. Latin olmayan karakterleri depolamaya çalışıyorsanız, sonunda mojibake olurlar . Bu makalenin giriş metnini faydalı bulabilirsiniz (ve biraz Java biliyorsanız daha da fazlasını).
Tam 4 baytlık UTF-8 desteğinin yalnızca MySQL 5.5'te sunulduğunu unutmayın. Bu sürümden önce, karakter başına 4 bayta değil, karakter başına yalnızca 3 bayta kadar çıkıyor. Yani Emoji uçağını değil sadece BMP düzlemini destekledi. Tam 4 bayt UTF-8 desteği istiyorsanız, MySQL'i en az 5.5'e yükseltin veya PostgreSQL gibi başka bir RDBMS'ye gidin. MySQL 5.5+ olarak adlandırılır utf8mb4
.
VARBINARY
yerine kaydedebilir VARCHAR
ve işletme katmanında kendiniz kod çözebilir / kodlayabilirsiniz, ancak bu hilekârdır. Yeni bir soru sormayı düşünün, belki daha iyi yollar vardır.
Latin1'de her karakter tam olarak bir bayt uzunluğundadır. Utf8'de bir karakter birden fazla bayttan oluşabilir. Sonuç olarak, utf8, latin1'den daha fazla karaktere sahiptir (ve ortak oldukları karakterler mutlaka aynı bayt / bayt sırasıyla temsil edilmeyebilir).
binary
harmanlamayı kastetmiştim ...? ve ingilizce / sayısal alanlar için hangisi daha iyidir: ascii_general_ci
veya ascii_bin
?