Ricerca…


Dichiarazione

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

Connessione

È fondamentale utilizzare i set di caratteri per dire al server MySQL quali sono i byte del client. Ecco un modo:

SET NAMES utf8mb4;

Ogni lingua (PHP, Python, Java, ...) ha il suo modo di preferire solitamente SET NAMES .

Ad esempio: SET NAMES utf8mb4 , insieme a una colonna dichiarata CHARACTER SET latin1 - questo convertirà da latin1 a utf8mb4 quando INSERTing e converti indietro quando SELECTing .

Quale SET DI CARATTERE e COLLEZIONE?

Ci sono dozzine di set di caratteri con centinaia di regole di confronto. (Una determinata fascicolazione appartiene a un solo set di caratteri.) Vedere l'output di SHOW COLLATION; .

Di solito ci sono solo 4 CHARACTER SETs che contano:

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.

Tutti includono caratteri inglesi, codificati in modo identico. utf8 è un sottoinsieme di utf8mb4.

La migliore pratica...

  • Usa utf8mb4 per qualsiasi colonna TEXT o VARCHAR che può contenere una varietà di lingue.
  • Usa ascii (latin1 è ok) per stringhe esadecimali (UUID, MD5, ecc.) E codici semplici (country_code, codice_postale, ecc.).

utf8mb4 non esisteva fino alla versione 5.5.3, quindi utf8 era il migliore disponibile prima.

Fuori da MySQL , "UTF8" significa le stesse cose di utf8mb4 di MySQL, non di utf8 di MySQL.

Le regole di confronto iniziano con il nome charset e di solito terminano con _ci per "case e accento insensibile" o " _bin for" per confrontare semplicemente i bit.

L'ultima collazione utf8mb4_unicode_520_ci è utf8mb4_unicode_520_ci , basata su Unicode 5.20. Se stai lavorando con una sola lingua, potresti, ad esempio, utf8mb4_polish_ci , che riorganizzerà leggermente le lettere, in base alle convenzioni polacche.

Impostazione dei set di caratteri su tabelle e campi

È possibile impostare un set di caratteri sia per tabella, sia per singolo campo utilizzando le istruzioni CHARACTER SET e 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 e Country utilizzeranno UTF8 , poiché lo impostiamo come set di caratteri predefinito per la tabella. Street d'altra parte, userà ASCII , come gli abbiamo detto specificamente di farlo.

L'impostazione del giusto set di caratteri dipende in gran parte dal set di dati, ma può anche migliorare notevolmente la portabilità tra i sistemi che lavorano con i dati.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow