Utwórz bazę danych MySQL za pomocą zestawu znaków UTF-8

142

Jestem nowy w MySQL i chciałbym wiedzieć:

Jak mogę utworzyć bazę danych za pomocą zestawu znaków, utf-8tak jak to zrobiłem w Navicat?

create mydatabase;

... wydaje się używać jakiegoś domyślnego zestawu znaków.

użytkownik3397998
źródło

Odpowiedzi:

232

Uwaga: Następujące jest teraz uważane za lepszą praktykę (patrz odpowiedź bikeman868 ):

CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Oryginalna odpowiedź:

Spróbuj tego:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_general_ci;

Aby uzyskać więcej informacji, zobacz Zestaw znaków bazy danych i układanie w Podręczniku MySQL.

shellbye
źródło
1
MySQL utf8mb4jest tym, co nazywają reszta z nas utf8. Więc o co utf8pytasz MySQL ? Jest to ograniczona wersja utf-8, która działa tylko dla podzbioru znaków, ale zawodzi w przypadku takich rzeczy jak emoji. Później dodali, że utf8mb4jest to poprawna implementacja, ale MySQL musi pozostać kompatybilny z poprzednimi błędami, dlatego dodano nowe kodowanie zamiast naprawiać stare. Wszystkie nowe bazy danych powinny korzystać utf8mb4.
Stijn de Witt
Jeśli chcesz iść w dół króliczej nory: COLLATE utf8mb4_unicode_520_cilub utf8mb4_0900_ai_cilub nawet narodowe specyficzne, np utf8mb4_vi_0900_ai_ci. W przypadku MariaDB 10.2.2+ masz zestawienia „nopad” utf8mb4_unicode_520_nopad_ci. dev.mysql.com/doc/refman/8.0/en/charset-unicode-sets.html
Frank Forte
@shellbye Zastanów się nad aktualizacją odpowiedzi, aby wspomnieć o niej utf8mb4_0900_ai_ci. Wydaje się, że jest lepszy niżutf8mb4_unicode_ci
Manuel Jordan
63

Powinieneś użyć:

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Pamiętaj, że utf8_general_cinie jest już zalecaną najlepszą praktyką. Zobacz powiązane pytania i odpowiedzi:

Jaka jest różnica między utf8_general_ci i utf8_unicode_ci w przypadku przepełnienia stosu.

bikeman868
źródło
Rozważ zaktualizowanie swojej odpowiedzi, aby wspomnieć o niej utf8mb4_0900_ai_ci. Wydaje się, że jest lepszy niżutf8mb4_unicode_ci
Manuel Jordan