Szukaj…


Deklaracja

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

Połączenie

Istotne w użyciu zestawów znaków jest poinformowanie serwera MySQL o tym, jakie są kodowane bajty klienta. Oto jeden ze sposobów:

SET NAMES utf8mb4;

Każdy język (PHP, Python, Java, ...) ma swój własny sposób, który zwykle jest lepszy niż SET NAMES .

Na przykład: SET NAMES utf8mb4 wraz z kolumną zadeklarowaną CHARACTER SET latin1 - spowoduje to konwersję z latin1 do utf8mb4 podczas INSERTing i konwersję z powrotem podczas SELECTing .

Który ZNAK ZESTAWU I KOLACJA?

Istnieją dziesiątki zestawów znaków z setkami zestawień. (Dane zestawienie należy do tylko jednego zestawu znaków.) Zobacz dane wyjściowe SHOW COLLATION; .

Zwykle są tylko 4 CHARACTER SETs które mają znaczenie:

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.

Wszystkie zawierają angielskie znaki, zakodowane identycznie. utf8 jest podzbiorem utf8mb4.

Najlepsze praktyki...

  • Użyj utf8mb4 dla dowolnej kolumny TEXT lub VARCHAR która może zawierać wiele różnych języków.
  • Użyj ascii (latin1 jest w porządku) dla ciągów szesnastkowych (UUID, MD5 itp.) I prostych kodów (kod_krajowy, kod_pocztowy itp.).

utf8mb4 istniał dopiero w wersji 5.5.3, więc utf8 był wcześniej najlepszy z dostępnych.

Poza MySQL , „UTF8” oznacza te same rzeczy, co utf8mb4 MySQL, a nie utf8 MySQL.

Sortowanie rozpoczyna się od nazwy zestawu znaków i zwykle kończy się na _ci dla „niewrażliwy na _bin liter i akcent” lub _bin dla „po prostu porównaj bity.

„Najnowsze” zestawienie utf8mb4_unicode_520_ci to utf8mb4_unicode_520_ci , oparte na Unicode 5.20. Jeśli pracujesz w jednym języku, możesz chcieć, powiedzmy, utf8mb4_polish_ci , który nieznacznie zmieni kolejność liter w oparciu o polskie konwencje.

Ustawianie zestawów znaków w tabelach i polach

Możesz ustawić zestaw znaków zarówno dla tabeli, jak i dla poszczególnych pól za pomocą instrukcji CHARACTER SET i 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 i Country użyją UTF8 , ponieważ ustawiliśmy go jako domyślny zestaw znaków dla tabeli. Z drugiej strony Street będzie używać ASCII , jak to specjalnie powiedzieliśmy.

Ustawienie odpowiedniego zestawu znaków jest wysoce zależne od zestawu danych, ale może również znacznie poprawić przenośność między systemami pracującymi z danymi.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow