¿Cuál es la diferencia entre utf8 y latin1?
¿Cuál es la diferencia entre utf8 y latin1?
Respuestas:
UTF-8 está preparado para dominar el mundo, Latin1 no lo está.
Si está tratando de almacenar caracteres no latinos como chino, japonés, hebreo, ruso, etc., usando la codificación Latin1, entonces terminarán como mojibake . Puede encontrar útil el texto introductorio de este artículo (e incluso más si conoce un poco de Java).
Tenga en cuenta que el soporte completo de 4 bytes UTF-8 solo se introdujo en MySQL 5.5. Antes de esa versión, solo sube a 3 bytes por carácter, no a 4 bytes por carácter. Por lo tanto, solo admite el plano BMP y no, por ejemplo, el plano Emoji. Si desea compatibilidad total con UTF-8 de 4 bytes, actualice MySQL a al menos 5.5 o elija otro RDBMS como PostgreSQL. En MySQL 5.5+ se llama utf8mb4
.
VARBINARY
lugar de VARCHAR
decodificar / codificar en el nivel empresarial usted mismo, pero esto es hacky. Considere hacer una nueva pregunta, tal vez hay mejores formas.
En latin1 cada carácter tiene exactamente un byte de longitud. En utf8, un carácter puede constar de más de un byte. En consecuencia, utf8 tiene más caracteres que latin1 (y los caracteres que tienen en común no están necesariamente representados por el mismo byte / bytesequence).
binary
cotejar ...? y cuál es mejor para los campos de inglés / numéricos: ascii_general_ci
o ascii_bin
?