2011-01-22 105 views
12

¿Qué debería establecer para su cotejo cuando se crean tablas en MySQL:MySQL Colación: latin1_swedish_ci Vs utf8_general_ci

  • latin1_swedish_ci o utf8_general_ci

¿Cuál es colación de todos modos?

He estado usando latin1_swedish_ci, ¿causaría algún problema?

+1

Re que colación es: http://stackoverflow.com/questions/3324900 –

+0

posible duplicado de [Diferencias entre utf8 y latin1] (http://stackoverflow.com/questions/2708958/differences-between-utf8-and -latin1) –

+0

posible duplicado de [No entiendo la intercalación? (Mysql, RDBMS, conjuntos de caracteres)] (http://stackoverflow.com/questions/3324900/i-dont-understand-collation-mysql-rdbms-character-sets) – Crozin

Respuesta

3

Usted puede leer acerca de los juegos de caracteres y colaciones en MySQL 5.5 aquí:
Character Sets and Collations in General
Character Sets and Collations in MySQL

El apoyo colaciones es necesario apoyar todos los muchos idiomas escritos del mundo. Por ejemplo, en mi idioma (danés) tenemos un carácter especial 'æ'. Suena como sueco, alemán, húngaro (y más) 'ä'. Ese personaje también aparece en danés con palabras importadas de uno de esos idiomas. Debido a la compatibilidad de las intercalaciones, podemos imprimir tanto correctamente como el mismo orden (ORDEN POR ...) como idénticos. Sin el apoyo de colaciones que no fue posible.

Las intercalaciones suecas son las predeterminadas de MySQL para los caracteres latinos. Funciona bien con el inglés. El inglés es muy fácil: funciona con todo, porque no tiene caracteres especiales, acentos, etc. Pero si tienes otro idioma que utilizas con frecuencia (por ejemplo, español), puedes cambiar la intercalación por una española, por lo que ordenar las cadenas españolas ser correcto de acuerdo a las reglas del idioma español.

Un ejemplo muy especial de colación es uno de los alemanes. Fue creado para permitir la clasificación como en las guías telefónicas alemanas. ¡Las guías telefónicas alemanas no siguen las reglas generales del idioma alemán!

Puede crear su propia clasificación si lo desea. Las intercalaciones se pueden compilar o formato de texto.

6

Hagas lo que hagas, no intentes utilizar la intercalación swedish_ci predeterminada con utf8 (en lugar de latin) en mysql, o obtendrás un error. Las intercalaciones se deben emparejar con el juego de caracteres correcto para que funcionen. Este SQL fallará debido a la falta de coincidencia en juego de caracteres y la colación:

CREATE TABLE IF NOT EXISTS `db`.`events_user_preference` (
    `user_id` INT(10) UNSIGNED NOT NULL , 
    `email` VARCHAR(40) NULL DEFAULT NULL , 
    PRIMARY KEY (`user_id`)) 
ENGINE = InnoDB 
DEFAULT CHARACTER SET = utf8 
COLLATE = latin1_swedish_ci 

Y @Blaisorblade señaló que la manera de solucionar este problema es utilizar el conjunto de caracteres que va con la colación sueco:

DEFAULT CHARACTER SET = utf8_swedish_ci 

El SQL para el módulo cal (calendario) para el framework Yii php tenía algo similar al código erróneo anterior. Espero que ya lo hayan arreglado.

+2

El error en el código anterior se debe a que combina el conjunto de caracteres UTF8 con una intercalación latin1_ *. Debería usar en su lugar 'utf8_swedish_ci' (http://dev.mysql.com/doc/refman/5.1/en/charset-unicode-sets.html). Por lo tanto, su respuesta debería decir que las intercalaciones son específicas del conjunto de caracteres, y las intercalaciones de un juego de caracteres no se pueden combinar con otro juego de caracteres. – Blaisorblade

+0

Sí, esa es una forma más concisa de decirlo, solo quería responder la pregunta de OP y evitar que cometieran el error explicado en el código. También debería proporcionar un código que funcione. Agregará el tuyo – hobs

-1

En Wamp Server 2.5 puede cambiar la clasificación ingresando a PHPAdmin, seleccionando la base de datos que necesita cambiar. Esto le dará otro conjunto de pestañas. Seleccione la pestaña llamada Operaciones. En esa pestaña aparecerá una sección llamada colación, seleccione la que desee en el menú desplegable y seleccione ir.

Cuestiones relacionadas