jaka jest różnica między utf8 a latin1?
mysql
utf-8
installation
latin1
binbash
źródło
źródło
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
.źródło
VARBINARY
zamiastVARCHAR
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).
źródło
binary
sortowanie ...? a który jest lepszy dla pól angielskich / numerycznych:ascii_general_ci
lubascii_bin
?