Was ist der Unterschied zwischen utf8 und latin1?
Was ist der Unterschied zwischen utf8 und latin1?
Antworten:
UTF-8 ist auf die Weltherrschaft vorbereitet, Latin1 nicht.
Wenn Sie versuchen, nicht-lateinische Zeichen wie Chinesisch, Japanisch, Hebräisch, Russisch usw. mit Latin1-Codierung zu speichern, werden sie als Mojibake angezeigt . Möglicherweise finden Sie den Einführungstext dieses Artikels hilfreich (und noch mehr, wenn Sie ein bisschen Java kennen).
Beachten Sie, dass die vollständige 4-Byte-UTF-8-Unterstützung nur in MySQL 5.5 eingeführt wurde. Vor dieser Version sind es nur bis zu 3 Bytes pro Zeichen, nicht bis zu 4 Bytes pro Zeichen. Es wurde also nur die BMP-Ebene unterstützt und nicht z. B. die Emoji-Ebene. Wenn Sie eine vollständige 4-Byte-UTF-8-Unterstützung wünschen, aktualisieren Sie MySQL auf mindestens 5,5 oder wählen Sie ein anderes RDBMS wie PostgreSQL. In MySQL 5.5+ heißt es utf8mb4
.
VARBINARY
statt VARCHAR
und dekodieren / kodieren in dem Business - Tiere selbst, aber dies ist Hacky. Stellen Sie eine neue Frage, vielleicht gibt es bessere Möglichkeiten.
In latin1 ist jedes Zeichen genau ein Byte lang. In utf8 kann ein Zeichen aus mehr als einem Byte bestehen. Folglich hat utf8 mehr Zeichen als latin1 (und die Zeichen, die sie gemeinsam haben, werden nicht unbedingt durch dasselbe Byte / dieselbe Bytequenz dargestellt).
binary
zusammenstellen ...? und welches ist besser für englisch / numerische Felder: ascii_general_ci
oder ascii_bin
?