Как сохранить Emoji в MySQL?Войдите в базу данных Emoji выражение вопросительный знак проблема символа

Если эмодзи хранятся в базе данных MySQL или MariaDB в кодировке UTF-8 , они отображаться не будут.

Почему введенное в базу данных выражение Emoji становится символом вопросительного знака?

Поскольку выражения Emoji представляют собой 4-байтовые символы, а набор символов utf8 поддерживает только 1-3 байта символов, выражения Emoji нельзя записать в базу данных.

Как решить проблему, что введенное в базу данных выражение Emoji становится символом вопросительного знака?

Есть 2 решения:

  1. Введите текст вручную, заменив четырехбайтовые символы пользовательскими символами.
  2. 修改 MySQL Набор символов базы данных, изменение набора символов базы данных с utf8 на utf8mb4, поддержка символов 1-4 байта.

На самом деле, первый метод требует слишком много работы и не рекомендуется.

Рекомендуется использовать второе решение, изменить набор символов базы данных MySQL.

Начиная с версии MySQL 5.5.3, база данных может поддерживать набор символов utf4mb8 из 4 байт, а символ может иметь до 4 байт, поэтому он может поддерживать больше наборов символов, а также может хранить выражения Emoji.

  • После MySQL 5.5.3 вы можете легко перейти на набор символов utf8mb4.
  • В то же время utf8mb4 совместим с набором символов utf8.
  • Кодировка, положение и хранение символов utf8 находятся в utf8mb4.
  • Такой же, как набор символов utf8, без повреждения существующих данных.

Из-заPHPMYADMINДля вновь созданных таблиц во вновь созданной базе данных кодировка символов по умолчанию:Latin1

  • Эта кодировка не может вставлять китайские выражения и выражения эмодзи;
  • Вам необходимо изменить кодировку набора символов базы данных и таблицы на utf8mb4;
  • Затем перезапустите MySQL, вы можете вставить китайские выражения и выражения Emoji.

Решение проблемы с символом MySQL Emoji

Шаг 1: Измените конфигурационный файл MySQL my.cnf

  • (Сервер Windows — это my.ini,LinuxСервер мой.cnf)
  • файл my.cnf, обычно в/etc/mysql/my.cnfдолжность.
  • Панель управления КВПФайл my.cnf находится в/etc/my.cnfдолжность.

После того, как вы найдете его, добавьте следующий контент в следующие три части ▼

[client]

default-character-set = utf8mb4

[mysql]

default-character-set = utf8mb4

[mysqld]

character-set-client-handshake = FALSE

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

init_connect='SET NAMES utf8mb4'

Шаг 2: Перезапустите базу данных MySQL.

service mysqld restart

Шаг 3: Еще раз проверьте набор символов и введите ▼ в командной строке SQL.

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';

Проверьте следующее ▼

Как сохранить Emoji в MySQL?Войдите в базу данных Emoji выражение вопросительный знак проблема символа

Введите следующую команду SQL▼

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

Проверьте, так ли это▼

 +--------------------------+--------------------+

| Variable_name | Value |

+--------------------------+--------------------+

| character_set_client | utf8mb4 |

| character_set_connection | utf8mb4 |

| character_set_database | utf8mb4 |

| character_set_filesystem | binary |

| character_set_results | utf8mb4 |

| character_set_server | utf8mb4 |

| character_set_system | utf8 |

| collation_connection | utf8mb4_unicode_ci |

| collation_database | utf8mb4_unicode_ci |

| collation_server | utf8mb4_unicode_ci |

+--------------------------+--------------------+

После создания новой базы данных в phpMyAdmin необходимо проверить кодировку базы данных. ▼

SHOW CREATE DATABASE db_name;
  • 如:SHOW CREATE DATABASE test;

Если кодировка базы данных неutf8mb4, вы должны изменить набор символов базы данных наutf8mb4 .

Как изменить набор символов базы данных на utf8mb4?

Шаг 1: Нажмите на имя текущей базы данных в phpMyAdmin, затем нажмите SQL.

Шаг 2: Введите следующую команду, чтобы изменить набор символов базы данных наutf8mb4

ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
  • 如:ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;

Шаг 3: Перезапустите базу данных MySQL.

service mysqld restart
  • Вот и все.

Вот несколько примеров команд SQL:

Измените набор символов по умолчанию и все столбцы символов таблицы на новый набор символов ▼

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
  • 如:ALTER TABLE logtest CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8_general_ci;

Если вы изменяете только набор символов по умолчанию для таблицы▼

ALTER TABLE tbl_name  DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
  • 如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;

Изменить набор символов поля ▼

ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name 
  • 如:ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;

Посмотреть код таблицы ▼

SHOW CREATE TABLE tbl_name;

Посмотреть коды полей ▼

SHOW FULL COLUMNS FROM tbl_name;

Посмотреть текущий код базы данных ▼

SHOW VARIABLES LIKE 'character_set_%';
  • Пакет драйверов mysql-connector-java поддерживает только utf5.1.13mb8 в 4+.

Надеюсь, статья «Как хранить эмодзи в MySQL? Проблемы с вводом символов вопросительного знака эмодзи в базу данных», опубликованная в блоге Чэнь Вэйляна ( https://www.chenweiliang.com/ ), окажется для вас полезной.

Не стесняйтесь делиться ссылкой на эту статью: https://www.chenweiliang.com/cwl-26592.html

Чтобы раскрыть еще больше скрытых трюков🔑, присоединяйтесь к нашему каналу в Telegram!

Поделитесь и поставьте лайк, если вам понравилось! Ваши репосты и лайки — наша постоянная мотивация!

 

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Наверх