Jinsi ya kuhifadhi Emoji kwenye MySQL?Ingiza tatizo la alama ya alama ya Emoji ya hifadhidata

Ikiwa usemi wa Emoji umehifadhiwa katika usimbaji utf8Hifadhidata ya MySQLau MariaDB, haiwezi kuonyeshwa.

Kwa nini usemi wa Emoji ulioingizwa kwenye hifadhidata unakuwa herufi ya alama ya kuuliza?

Kwa sababu usemi wa Emoji ni vibambo vya baiti 4, na seti ya utf8 inaweza kutumia baiti 1-3 za herufi pekee, usemi wa Emoji hauwezi kuandikwa kwenye hifadhidata.

Jinsi ya kutatua shida ambayo usemi wa Emoji uliingia kwenye hifadhidata inakuwa tabia ya alama ya kuuliza?

Kuna suluhisho 2:

  1. Weka maandishi wewe mwenyewe, ukibadilisha herufi za baiti nne na herufi maalum.
  2. rekebisha MySQL Seti ya herufi ya hifadhidata, badilisha herufi ya hifadhidata kutoka utf8 hadi utf8mb4, usaidie herufi 1-4.

Kwa kweli, njia ya kwanza ni kazi nyingi na haifai.

Inashauriwa kutumia suluhisho la pili, kurekebisha seti ya tabia ya database ya MySQL.

Kuanzia toleo la MySQL 5.5.3, hifadhidata inaweza kuauni seti ya herufi ya utf4mb8 ya baiti 4, na mhusika anaweza kuwa na hadi baiti 4, kwa hivyo inaweza kuauni seti nyingi zaidi za herufi, na pia inaweza kuhifadhi usemi wa Emoji.

  • Baada ya MySQL 5.5.3, unaweza kusasisha bila mshono hadi seti ya herufi utf8mb4.
  • Wakati huo huo, utf8mb4 inaendana na seti ya herufi ya utf8.
  • Usimbaji, nafasi na uhifadhi wa herufi za utf8 ziko katika utf8mb4.
  • Sawa na seti ya herufi ya utf8, hakuna uharibifu wa data iliyopo.

Kwa sababu yaphpMyAdminKwa jedwali mpya zilizoundwa katika hifadhidata mpya iliyoundwa, usimbaji wa herufi chaguo-msingi ni:Latin1

  • Usimbaji huu hauwezi kuingiza misemo ya Kichina na Emoji;
  • Unahitaji kubadilisha usimbaji wa seti ya herufi ya seti ya herufi ya hifadhidata na jedwali kuwa utf8mb4;
  • Kisha, anzisha upya MySQL, unaweza kuingiza maneno ya Kichina na Emoji.

Suluhisho la shida ya herufi ya MySQL Emoji

Sura ya 1:Rekebisha faili ya usanidi ya MySQL my.cnf

  • (Seva ya Windows ni my.ini,LinuxSeva ni my.cnf)
  • my.cnf faili, kwa kawaida in/etc/mysql/my.cnfnafasi.
  • Jopo la Kudhibiti la CWPFaili ya my.cnf, iko ndani/etc/my.cnfnafasi.

Baada ya kuipata, tafadhali ongeza maudhui yafuatayo katika sehemu tatu zifuatazo ▼

[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'

Sura ya 2:Anzisha tena hifadhidata ya MySQL

service mysqld restart

Hatua ya 3: Angalia herufi iliyowekwa tena na uweke ▼ kwenye safu ya amri ya SQL

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';

Angalia ikiwa zifuatazo ▼

Jinsi ya kuhifadhi Emoji kwenye MySQL?Ingiza tatizo la alama ya alama ya Emoji ya hifadhidata

Ingiza amri ifuatayo ya SQL▼

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

Angalia ikiwa ni kama ifuatavyo▼

 +--------------------------+--------------------+

| 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 |

+--------------------------+--------------------+

Baada ya kuunda hifadhidata mpya katika phpMyAdmin, lazimaTazama msimbo wa hifadhidata ▼

SHOW CREATE DATABASE db_name;
  • 如:SHOW CREATE DATABASE test;

Ikiwa usimbaji wa hifadhidata sioutf8mb4, lazima urekebishe herufi ya hifadhidata iliyowekwautf8mb4 .

Jinsi ya kurekebisha tabia ya hifadhidata iliyowekwa utf8mb4?

Hatua ya 1: Bofya jina la hifadhidata la sasa katika phpMyAdmin, kisha ubofye SQL.

Hatua ya 2: Ingiza amri ifuatayo ili kurekebisha herufi ya hifadhidata iliyowekwautf8mb4

ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4
  • 如:ALTER DATABASE test DEFAULT CHARACTER SET utf8mb4;

Sura ya 3:Anzisha tena hifadhidata ya MySQL

service mysqld restart
  • Ni hayo tu.

Hapa kuna mifano ya amri za SQL:

Badilisha seti ya herufi chaguo-msingi na safu wima zote za vibambo vya jedwali hadi seti mpya ya herufi ▼

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;

Ukirekebisha tu seti ya herufi chaguo-msingi ya jedwali▼

ALTER TABLE tbl_name  DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;
  • 如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8mb4 COLLATE utf8_general_ci;

Rekebisha seti ya herufi ya sehemu ▼

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;

Tazama msimbo wa jedwali ▼

SHOW CREATE TABLE tbl_name;

Tazama Misimbo ya Sehemu ▼

SHOW FULL COLUMNS FROM tbl_name;

Tazama msimbo wa sasa wa hifadhidata ▼

SHOW VARIABLES LIKE 'character_set_%';
  • Kifurushi cha kiendeshi cha mysql-connector-java inasaidia tu utf5.1.13mb8 katika 4+

发表 评论

Barua pepe yako haitachapishwa. 必填 项 已 用 * 标注

Kitabu ya Juu