Jak zapisać Emoji w MySQL?

Jeśli wyrażenie Emoji jest zapisane w kodowaniu utf8Baza danych MySQLlub MariaDB, nie można go wyświetlić.

Dlaczego wyrażenie Emoji wprowadzone do bazy danych staje się znakiem zapytania?

Ponieważ wyrażenia Emoji to 4-bajtowe znaki, a zestaw znaków utf8 obsługuje tylko 1-3 bajty znaków, wyrażeń Emoji nie można zapisywać w bazie danych.

Jak rozwiązać problem polegający na tym, że wyrażenie Emoji wprowadzone do bazy danych staje się znakiem zapytania?

Istnieją 2 rozwiązania:

  1. Wprowadź tekst ręcznie, zastępując znaki czterobajtowe znakami niestandardowymi.
  2. modyfikować MySQL Zestaw znaków bazy danych, zmień zestaw znaków bazy danych z utf8 na utf8mb4, obsługa znaków 1-4 bajtowych.

W rzeczywistości pierwsza metoda jest zbyt pracochłonna i nie jest wskazana.

Zaleca się użycie drugiego rozwiązania, modyfikację zestawu znaków bazy danych MySQL.

Począwszy od MySQL 5.5.3, baza danych może obsługiwać zestaw znaków utf4mb8 składający się z 4 bajtów, a znak może mieć do 4 bajtów, dzięki czemu może obsługiwać więcej zestawów znaków, a także może przechowywać wyrażenia Emoji.

  • Po MySQL 5.5.3 możesz w zasadzie bezproblemowo uaktualnić do zestawu znaków utf8mb4.
  • Jednocześnie utf8mb4 jest kompatybilny z zestawem znaków utf8.
  • Kodowanie, pozycja i przechowywanie znaków utf8 są w utf8mb4.
  • Taki sam jak zestaw znaków utf8, bez uszkodzeń istniejących danych.

SpowodowanyphpMyAdminW przypadku nowo utworzonych tabel w nowo utworzonej bazie danych domyślne kodowanie znaków to:Latin1

  • To kodowanie nie może wstawiać wyrażeń chińskich i emoji;
  • Musisz zmienić kodowanie zestawu znaków bazy danych i tabeli na utf8mb4;
  • Następnie uruchom ponownie MySQL, możesz wstawić wyrażenia chińskie i emoji.

Rozwiązanie problemu znaków Emoji MySQL

1 步:Zmodyfikuj plik konfiguracyjny MySQL my.cnf

  • (serwer Windows to my.ini,LinuxSerwer to my.cnf)
  • plik my.cnf, zwykle w/etc/mysql/my.cnfpozycja.
  • Panel sterowania CWPPlik my.cnf jest w/etc/my.cnfpozycja.

Gdy go znajdziesz, dodaj następującą treść w następujących trzech częściach ▼

[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 步:Uruchom ponownie bazę danych MySQL

service mysqld restart

Krok 3: Sprawdź ponownie zestaw znaków i wprowadź ▼ w wierszu poleceń SQL

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';

Sprawdź, czy następujące ▼

Jak zapisać Emoji w MySQL?

Wpisz następujące polecenie SQL▼

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

Sprawdź, czy wygląda następująco▼

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

| 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 |

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

Po utworzeniu nowej bazy danych w phpMyAdmin musiszWyświetl kod bazy danych ▼

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

Jeśli kodowanie bazy danych nie jestutf8mb4, musisz zmodyfikować zestaw znaków bazy danych nautf8mb4 .

Jak zmodyfikować zestaw znaków bazy danych na utf8mb4?

Krok 1: Kliknij bieżącą nazwę bazy danych w phpMyAdmin, a następnie kliknij SQL.

Krok 2: Wprowadź następujące polecenie, aby zmienić zestaw znaków bazy danych nautf8mb4

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

3 步:Uruchom ponownie bazę danych MySQL

service mysqld restart
  • Otóż ​​to.

Oto kilka przykładów poleceń SQL:

Zmień domyślny zestaw znaków i wszystkie kolumny znaków w tabeli na nowy zestaw znaków ▼

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;

Jeśli zmodyfikujesz tylko domyślny zestaw znaków tabeli▼

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

Zmodyfikuj zestaw znaków pola ▼

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;

Wyświetl kod tabeli ▼

SHOW CREATE TABLE tbl_name;

Wyświetl kody pól ▼

SHOW FULL COLUMNS FROM tbl_name;

Wyświetl aktualny kod bazy danych ▼

SHOW VARIABLES LIKE 'character_set_%';
  • Pakiet sterowników mysql-connector-java obsługuje tylko utf5.1.13mb8 w wersji 4+

Nadzieja Chen Weiliang Blog ( https://www.chenweiliang.com/ ) udostępniono „Jak zapisać Emoji w MySQL? Wprowadź problem ze znakiem zapytania z wyrażeniem bazy danych Emoji”, który jest dla Ciebie pomocny.

Zapraszamy do udostępnienia linku do tego artykułu:https://www.chenweiliang.com/cwl-26592.html

Witamy na kanale Telegram bloga Chen Weiliang, aby uzyskać najnowsze aktualizacje!

🔔 Bądź pierwszą osobą, która otrzyma cenny „Przewodnik po użyciu narzędzia AI do marketingu treści ChatGPT” w głównym katalogu kanału! 🌟
📚 Ten przewodnik zawiera ogromną wartość, 🌟To rzadka okazja, nie przegap jej! ⏰⌛💨
Udostępnij i polub, jeśli chcesz!
Twoje udostępnianie i polubienia to nasza ciągła motywacja!

 

发表 评论

Twoj adres e-mail nie bedzie opublikowany. 必填 项 已 用 * 标注

przewiń na górę