Создайте базу данных MySQL с набором символов UTF-8

142

Я новичок в MySQL, и я хотел бы знать:

Как я могу создать базу данных с utf-8набором символов, как я это сделал в Navicat?

create mydatabase;

... кажется, использует какую-то кодировку по умолчанию.

user3397998
источник

Ответы:

233

Примечание: следующее теперь считается лучшей практикой (см . Ответ bikeman868 ):

CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Оригинальный ответ:

Попробуй это:

CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_general_ci;

Для получения дополнительной информации см. Набор символов базы данных и сопоставление в Справочном руководстве MySQL.

shellbye
источник
1
MySQL - utf8mb4это то, что остальные называют utf8. Так что же такое MySQL, utf8спросите вы? Это ограниченная версия utf-8, которая работает только для подмножества персонажей, но не подходит для таких вещей, как эмодзи. Позже они добавили, utf8mb4что это правильная реализация, но MySQL должен оставаться обратно совместимым со своими старыми ошибками, поэтому добавил новую кодировку вместо исправления старой. Все новые базы данных следует использовать utf8mb4.
Стейн де Витт
Если вы хотите идти вниз по кроличьей норе: COLLATE utf8mb4_unicode_520_ciили utf8mb4_0900_ai_ciили даже локаль конкретные, например: utf8mb4_vi_0900_ai_ci. Для MariaDB 10.2.2+ у вас есть сопоставления nopad utf8mb4_unicode_520_nopad_ci. dev.mysql.com/doc/refman/8.0/ru/charset-unicode-sets.html
Фрэнк Форте
@shellbye Подумайте об обновлении своего ответа, чтобы упомянуть о нем utf8mb4_0900_ai_ci. Кажется, лучше, чемutf8mb4_unicode_ci
Мануэль Джордан
64

Вы должны использовать:

CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Обратите внимание, что utf8_general_ciбольше не рекомендуется лучшая практика. Смотрите соответствующие вопросы и ответы:

В чем разница между utf8_general_ci и utf8_unicode_ci в переполнении стека.

bikeman868
источник
Попробуйте обновить свой ответ, чтобы упомянуть о utf8mb4_0900_ai_ci. Кажется, лучше, чемutf8mb4_unicode_ci
Мануэль Джордан