Каталог артыкулаў
Калі выраз 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
- Гэта кадыроўка не можа ўстаўляць кітайскія выразы і выразы Emoji;
- Вам трэба змяніць кадыроўку набору сімвалаў базы дадзеных і табліцы на utf8mb4;
- Затым перазапусціце MySQL, вы можаце ўставіць кітайскія выразы і выразы Emoji.
Рашэнне праблемы персанажа 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 у блогу Чэнь Вэйляна, каб атрымліваць апошнія абнаўленні!
📚 Гэты дапаможнік мае вялікую каштоўнасць, 🌟Гэта рэдкая магчымасць, не прапусціце яе! ⏰⌛💨
Падзяліцеся і лайкайце, калі хочаце!
Ваш абмен і лайкі - наша пастаянная матывацыя!