Zoeken…


Verklaring

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

Verbinding

Essentieel voor het gebruik van tekensets is om de MySQL-server te vertellen wat de bytes van de client zijn. Hier is een manier:

SET NAMES utf8mb4;

Elke taal (PHP, Python, Java, ...) heeft zijn eigen manier die meestal de voorkeur verdient boven SET NAMES .

Bijvoorbeeld: SET NAMES utf8mb4 , samen met een kolom die CHARACTER SET latin1 - deze converteert van latin1 naar utf8mb4 bij het INSERTing en converteert terug bij het SELECTing .

Welk KARAKTERSET en COLLATIE?

Er zijn tientallen tekensets met honderden verzamelingen. (Een gegeven sortering hoort bij slechts één tekenset.) Zie de uitvoer van SHOW COLLATION; .

Er zijn meestal slechts 4 CHARACTER SETs doen:

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.

Alle tekens bevatten Engelse tekens, identiek gecodeerd. utf8 is een subset van utf8mb4.

Beste oefening...

  • Gebruik utf8mb4 voor eventuele TEXT of VARCHAR kolom die een verscheidenheid aan talen in kan hebben.
  • Gebruik ascii (latin1 is ok) voor hex strings (UUID, MD5, enz.) En eenvoudige codes (landcode, postcode, enz.).

utf8mb4 bestond niet tot versie 5.5.3, dus utf8 was daarvoor de best beschikbare.

Buiten MySQL betekent "UTF8" dezelfde dingen als utf8mb4 van MySQL, niet utf8 van MySQL.

Collaties beginnen met de naam van het _ci en eindigen meestal met _ci voor "hoofdlettergevoelig en accent ongevoelig" of _bin voor "eenvoudigweg de bits vergelijken.

De 'nieuwste' utf8mb4-sortering is utf8mb4_unicode_520_ci , gebaseerd op Unicode 5.20. Als u met één taal werkt, wilt u bijvoorbeeld utf8mb4_polish_ci , die de letters enigszins zal herschikken, op basis van Poolse conventies.

Tekensets instellen op tabellen en velden

U kunt een tekenset zowel per tabel als per afzonderlijk veld instellen met behulp van de CHARACTER SET en CHARSET instructies:

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 en Country gebruiken UTF8 , omdat we dat instellen als de standaardtekenset voor de tabel. Street daarentegen zal ASCII , zoals we specifiek hebben gezegd om dit te doen.

Het instellen van de juiste tekenset is sterk afhankelijk van uw gegevensset, maar kan ook de draagbaarheid tussen systemen die met uw gegevens werken, aanzienlijk verbeteren.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow