Adresár článkov
Ak je výraz Emoji uložený v kódovaní utf8Databáza MySQLalebo MariaDB, nedá sa zobraziť.
Prečo sa výraz Emoji zadaný do databázy stane znakom otáznika?
Pretože výrazy Emoji sú 4-bajtové znaky a znaková sada utf8 podporuje iba 1-3 bajty znakov, výrazy Emoji nemožno zapisovať do databázy.
Ako vyriešiť problém, že výraz Emoji zadaný do databázy sa stane znakom otáznika?
Sú 2 riešenia:
- Zadajte text manuálne a nahraďte štvorbajtové znaky vlastnými znakmi.
- upraviť MySQL Znaková sada databázy, zmena znakovej sady databázy z utf8 na utf8mb4, podpora 1-4 bajtových znakov.
V skutočnosti je prvá metóda príliš náročná na prácu a neodporúča sa.
Odporúča sa použiť druhé riešenie, upraviť znakovú sadu databázy MySQL.
Od verzie MySQL 5.5.3 môže databáza podporovať znakovú sadu utf4mb8 4 bajty a znak môže mať až 4 bajty, takže môže podporovať viac znakových sád a tiež môže ukladať výrazy Emoji.
- Po MySQL 5.5.3 môžete v podstate bez problémov upgradovať na znakovú sadu utf8mb4.
- Zároveň je utf8mb4 kompatibilný so znakovou sadou utf8.
- Kódovanie, umiestnenie a ukladanie znakov utf8 sú v utf8mb4.
- Rovnaké ako znaková sada utf8, žiadne poškodenie existujúcich údajov.
KvôliphpMyAdminPre novovytvorené tabuľky v novovytvorenej databáze je predvolené kódovanie znakov:Latin1
- Toto kódovanie nedokáže vložiť čínske výrazy a výrazy Emoji;
- Musíte zmeniť kódovanie znakovej sady databázovej znakovej sady a tabuľky na utf8mb4;
- Potom reštartujte MySQL, môžete vložiť čínske výrazy a výrazy Emoji.
Riešenie problému so znakmi MySQL Emoji
第 1 步:Upravte konfiguračný súbor MySQL my.cnf
- (Windows server je my.ini,LinuxServer je my.cnf)
- súbor my.cnf, zvyčajne v
/etc/mysql/my.cnf
pozíciu. - Ovládací panel CWPSúbor my.cnf je in
/etc/my.cnf
pozíciu.
Keď ho nájdete, pridajte nasledujúci obsah do nasledujúcich troch častí ▼
[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 步:Reštartujte databázu MySQL
service mysqld restart
Krok 3: Znova skontrolujte znakovú sadu a do príkazového riadku SQL zadajte ▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';
Skontrolujte, či nasledujúce ▼
Zadajte nasledujúci príkaz SQL▼
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
Skontrolujte, či je to takto▼
+--------------------------+--------------------+ | 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 vytvorení novej databázy v phpMyAdmin musíteZobraziť kód databázy ▼
SHOW CREATE DATABASE db_name;
- 如:
SHOW CREATE DATABASE test;
Ak nie je kódovanie databázyutf8mb4
, musíte upraviť znakovú sadu databázy nautf8mb4
.
Ako upraviť znakovú sadu databázy na utf8mb4?
Krok 1: Kliknite na názov aktuálnej databázy v phpMyAdmin a potom kliknite na SQL.
Krok 2: Zadajte nasledujúci príkaz na úpravu znakovej sady databázyutf8mb4
▼
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
- 如:
ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;
第 3 步:Reštartujte databázu MySQL
service mysqld restart
- To je všetko.
Tu je niekoľko príkladov príkazov SQL:
Zmeňte predvolenú znakovú sadu a všetky stĺpce znakov v tabuľke na novú znakovú sadu ▼
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;
Ak upravíte iba predvolenú znakovú sadu tabuľky▼
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
- 如:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
Upravte znakovú sadu poľa ▼
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;
Zobraziť kód tabuľky ▼
SHOW CREATE TABLE tbl_name;
Zobraziť kódy polí ▼
SHOW FULL COLUMNS FROM tbl_name;
Zobraziť aktuálny kód databázy ▼
SHOW VARIABLES LIKE 'character_set_%';
- Balík ovládača mysql-connector-java podporuje iba utf5.1.13mb8 vo verzii 4+
Blog Hope Chen Weiliang ( https://www.chenweiliang.com/ ) zdieľal "Ako uložiť Emoji do MySQL? Zadajte do databázy Emoji výraz otáznik znak problém", čo je pre vás užitočné.
Vitajte pri zdieľaní odkazu na tento článok:https://www.chenweiliang.com/cwl-26592.html
Vitajte na telegramovom kanáli blogu Chen Weiliang, kde získate najnovšie aktualizácie!
📚 Táto príručka obsahuje obrovskú hodnotu, 🌟Toto je vzácna príležitosť, nenechajte si ju ujsť! ⏰⌛💨
Ak sa vám páči, zdieľajte a lajkujte!
Vaše zdieľanie a lajky sú našou neustálou motiváciou!