Katalog artykułów
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:
- Wprowadź tekst ręcznie, zastępując znaki czterobajtowe znakami niestandardowymi.
- 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.cnf
pozycja. - Panel sterowania CWPPlik my.cnf jest w
/etc/my.cnf
pozycja.
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 ▼
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!
📚 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!