jaka jest różnica między utf8 a latin1?
jaka jest różnica między utf8 a latin1?
Odpowiedzi:
UTF-8 jest przygotowany do dominacji nad światem, Latin1 nie.
Jeśli próbujesz zapisać znaki spoza alfabetu łacińskiego, takie jak chiński, japoński, hebrajski, rosyjski itp., Używając kodowania Latin1 , zostaną one ostatecznie oznaczone jako mojibake . Tekst wprowadzający do tego artykułu może okazać się przydatny (a nawet bardziej, jeśli znasz trochę Javę).
Zwróć uwagę, że pełna obsługa 4-bajtowego UTF-8 została wprowadzona tylko w MySQL 5.5. Przed tą wersją tylko 3 bajty na znak, a nie 4 bajty na znak. Obsługuje więc tylko płaszczyznę BMP, a nie np. Płaszczyznę Emoji. Jeśli chcesz mieć pełną obsługę 4-bajtowego UTF-8, zaktualizuj MySQL do co najmniej 5.5 lub wybierz inny RDBMS, taki jak PostgreSQL. W MySQL 5.5+ nazywa się utf8mb4
.
VARBINARY
zamiast VARCHAR
i samodzielnie dekodować / zakodować w warstwie biznesowej, ale to jest hack. Rozważ zadanie nowego pytania, może są lepsze sposoby.
W latin1 każdy znak ma dokładnie jeden bajt. W utf8 znak może składać się z więcej niż jednego bajtu. W konsekwencji utf8 ma więcej znaków niż latin1 (a wspólne znaki nie muszą być reprezentowane przez ten sam bajt / kolejność bajtów).
binary
sortowanie ...? a który jest lepszy dla pól angielskich / numerycznych: ascii_general_ci
lub ascii_bin
?