Справочник на статиите
Ако изразът Emoji се съхранява в utf8 кодиранеMySQL база данниили MariaDB, не може да се покаже.
Защо изразът Emoji, въведен в базата данни, се превръща във въпросителен знак?
Тъй като изразите на Emoji са 4-байтови знаци, а наборът от символи utf8 поддържа само 1-3 байта знаци, изразите на Emoji не могат да бъдат записани в базата данни.
Как да решим проблема, че изразът Emoji, въведен в базата данни, се превръща във въпросителен знак?
Има 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, можете да вмъкнете китайски и емоджи изрази.
Решение на проблема със знаци MySQL Emoji
Стъпка 1:Променете MySQL конфигурационния файл my.cnf
- (Windows сървърът е my.ini,LinuxСървърът е my.cnf)
- my.cnf файл, обикновено в
/etc/mysql/my.cnf
позиция. - CWP контролен панелФайлът 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';
Проверете дали следните ▼
Въведете следната 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+
Блог на Hope Chen Weiliang ( https://www.chenweiliang.com/ ) сподели „Как да запазя Emoji в MySQL? Въведете базата данни Emoji израз въпросителен знак проблем със знака“, което е полезно за вас.
Добре дошли да споделите връзката към тази статия:https://www.chenweiliang.com/cwl-26592.html
Добре дошли в канала на Telegram в блога на Chen Weiliang, за да получите най-новите актуализации!
📚 Това ръководство съдържа огромна стойност, 🌟Това е рядка възможност, не я пропускайте! ⏰⌛💨
Споделете и харесайте, ако ви харесва!
Вашите споделяния и харесвания са нашата постоянна мотивация!