Buscar..


Declaración

CREATE TABLE foo ( ...
    name CHARACTER SET utf8mb4
    ... );

Conexión

Es vital para el uso de conjuntos de caracteres decirle al servidor MySQL qué es lo que codifica los bytes del cliente. Aquí hay una forma:

SET NAMES utf8mb4;

Cada idioma (PHP, Python, Java, ...) tiene su propia forma en la que generalmente es preferible establecer SET NAMES .

Por ejemplo: SET NAMES utf8mb4 , junto con una columna declarada CHARACTER SET latin1 : se convertirá de latin1 a utf8mb4 al INSERTing y INSERTing convertir cuando SELECTing .

¿Qué conjunto de personajes y colección?

Hay docenas de juegos de caracteres con cientos de colaciones. (Una intercalación dada pertenece a un solo conjunto de caracteres). Vea la salida de SHOW COLLATION; .

Por lo general, solo hay 4 CHARACTER SETs que importan:

ascii -- basic 7-bit codes.
latin1 -- ascii, plus most characters needed for Western European languages.
utf8 -- the 1-, 2-, and 3-byte subset of utf8.  This excludes Emoji and some of Chinese.
utf8mb4 -- the full set of UTF8 characters, covering all current languages.

Todos incluyen caracteres ingleses, codificados idénticamente. utf8 es un subconjunto de utf8mb4.

Mejores prácticas...

  • Use utf8mb4 para cualquier columna TEXT o VARCHAR que pueda tener una variedad de idiomas.
  • Use ascii (latin1 está bien) para cadenas hexadecimales (UUID, MD5, etc.) y códigos simples (código de país, código postal, etc.).

utf8mb4 no existía hasta la versión 5.5.3, por lo que utf8 era el mejor disponible antes de eso.

Fuera de MySQL , "UTF8" significa lo mismo que utf8mb4 de MySQL, no utf8 de MySQL.

Las colaciones comienzan con el nombre del conjunto de caracteres y generalmente terminan con _ci para "insensibles a mayúsculas y minúsculas" o _bin para "simplemente comparar los bits.

La 'última' compilación utf8mb4 es utf8mb4_unicode_520_ci , basada en Unicode 5.20. Si está trabajando con un solo idioma, es posible que desee, por ejemplo, utf8mb4_polish_ci , que reorganizará las letras ligeramente, según las convenciones polacas.

Configuración de conjuntos de caracteres en tablas y campos

Puede establecer un conjunto de caracteres tanto por tabla como por campo individual utilizando las sentencias CHARACTER SET y CHARSET :

CREATE TABLE Address (
    `AddressID`   INTEGER NOT NULL PRIMARY KEY,
    `Street`      VARCHAR(80) CHARACTER SET ASCII,
    `City`        VARCHAR(80),
    `Country`     VARCHAR(80) DEFAULT "United States",
    `Active`      BOOLEAN DEFAULT 1,
) Engine=InnoDB default charset=UTF8;

City y Country usarán UTF8 , ya que lo configuramos como el conjunto de caracteres predeterminado para la tabla. Street por otro lado, usará ASCII , como le hemos dicho específicamente para que lo haga.

La configuración del conjunto de caracteres correcto depende en gran medida de su conjunto de datos, pero también puede mejorar la portabilidad entre los sistemas que trabajan con sus datos.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow