Հոդվածների տեղեկատու
Եթե Emoji արտահայտությունը պահվում է utf8 կոդավորման մեջMySQL տվյալների բազակամ MariaDB, այն չի կարող ցուցադրվել:
Ինչու՞ է տվյալների բազա մուտքագրված Emoji արտահայտությունը դառնում հարցական նշան:
Քանի որ Էմոջի արտահայտությունները 4 բայթանոց նիշեր են, և utf8 նիշերի հավաքածուն աջակցում է միայն 1-3 բայթ նիշ, Էմոջի արտահայտությունները չեն կարող գրվել տվյալների բազայում:
Ինչպե՞ս լուծել այն խնդիրը, որ տվյալների բազա մուտքագրված 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 Control Panelmy.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+-ում:
Հույս Chen Weiliang բլոգ ( https://www.chenweiliang.com/ ) կիսվել է «Ինչպե՞ս պահպանել Emoji-ն MySQL-ում: Մուտքագրեք տվյալների բազայի Emoji արտահայտությունը հարցական նշանի խնդիր», որն օգտակար է ձեզ համար:
Բարի գալուստ՝ կիսելու այս հոդվածի հղումը.https://www.chenweiliang.com/cwl-26592.html
Բարի գալուստ Chen Weiliang-ի բլոգի Telegram ալիք՝ վերջին թարմացումները ստանալու համար:
📚 Այս ուղեցույցը պարունակում է հսկայական արժեք, 🌟Սա հազվագյուտ հնարավորություն է, բաց մի՛ թողեք այն։ ⏰⌛💨
Տարածեք և հավանեք, եթե հավանեցիք:
Ձեր տարածումը և հավանումները մեր շարունակական շարժառիթն են: