Sut i arbed Emoji i MySQL? Rhowch y broblem nodau cwestiwn mynegiant Emoji i'r gronfa ddata

Os yw'r mynegiant Emoji yn cael ei storio mewn amgodio utf8Cronfa ddata MySQLneu MariaDB, ni ellir ei arddangos.

Pam mae'r mynegiad Emoji a roddir yn y gronfa ddata yn dod yn nod marc cwestiwn?

Oherwydd bod ymadroddion Emoji yn nodau 4-beit, a bod y set nodau utf8 yn cefnogi 1-3 beit o nodau yn unig, ni ellir ysgrifennu mynegiadau Emoji i'r gronfa ddata.

Sut i ddatrys y broblem bod y mynegiant Emoji a roddwyd i'r gronfa ddata yn dod yn nod marc cwestiwn?

Mae yna 2 ateb:

  1. Teipiwch destun â llaw, gan ddisodli cymeriadau pedwar beit gyda nodau arferol.
  2. addasu MySQL Set nodau cronfa ddata, newidiwch set nodau'r gronfa ddata o utf8 i utf8mb4, cefnogwch 1-4 nod beit.

Mewn gwirionedd, mae'r dull cyntaf yn ormod o waith ac nid yw'n ddoeth.

Argymhellir defnyddio'r ail ddatrysiad, addasu set nodau cronfa ddata MySQL.

Gan ddechrau o fersiwn MySQL 5.5.3, gall y gronfa ddata gefnogi'r set nodau utf4mb8 o 4 bytes, a gall cymeriad gael hyd at 4 beit, felly gall gefnogi mwy o setiau nodau, a gall hefyd storio ymadroddion Emoji.

  • Ar ôl MySQL 5.5.3, yn y bôn gallwch chi uwchraddio'n ddi-dor i'r set nodau utf8mb4.
  • Ar yr un pryd, mae utf8mb4 yn gydnaws â set nodau utf8.
  • Mae amgodio, lleoliad a storio nodau utf8 yn utf8mb4.
  • Yr un fath â set nodau utf8, dim difrod i'r data presennol.

OherwyddphpMyAdminAr gyfer tablau newydd eu creu mewn cronfa ddata sydd newydd ei chreu, yr amgodio nodau rhagosodedig yw:Latin1

  • Ni all yr amgodio hwn fewnosod ymadroddion Tsieineaidd ac Emoji;
  • Mae angen i chi newid amgodiad set nodau set nodau a thabl y gronfa ddata i utf8mb4;
  • Yna, ailgychwyn MySQL, gallwch fewnosod ymadroddion Tsieineaidd ac Emoji.

Datrysiad problem cymeriad MySQL Emoji

第 1 步 :Addasu ffeil ffurfweddu MySQL my.cnf

  • (Gweinydd Windows yw my.ini,LinuxY gweinydd yw my.cnf)
  • ffeil my.cnf, fel arfer yn/etc/mysql/my.cnfLleoliad.
  • Panel Rheoli CWPMae'r ffeil my.cnf, yn/etc/my.cnfLleoliad.

Ar ôl i chi ddod o hyd iddo, ychwanegwch y cynnwys canlynol yn y tair rhan ganlynol ▼

[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 步 :Ailgychwyn y gronfa ddata MySQL

service mysqld restart

Cam 3: Gwiriwch y set nodau eto a nodwch ▼ yn y llinell orchymyn SQL

SHOW VARIABLES WHERE Variable_name LIKE 'character_set_database';

Gwiriwch a yw'r canlynol ▼

Sut i arbed Emoji i MySQL? Rhowch y broblem nodau cwestiwn mynegiant Emoji i'r gronfa ddata

Rhowch y gorchymyn SQL canlynol ▼

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

Gwiriwch a yw fel a ganlyn ▼

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

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

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

Ar ôl creu cronfa ddata newydd yn phpMyAdmin, rhaid i chiGweld cod cronfa ddata ▼

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

Os nad yw'r amgodio cronfa ddatautf8mb4, rhaid i chi addasu set nodau'r gronfa ddata iutf8mb4 .

Sut i addasu set nodau'r gronfa ddata i utf8mb4?

Cam 1: Cliciwch enw'r gronfa ddata gyfredol yn phpMyAdmin, yna cliciwch ar SQL.

Cam 2: Rhowch y gorchymyn canlynol i addasu'r set nodau cronfa ddata iutf8mb4

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

第 3 步 :Ailgychwyn y gronfa ddata MySQL

service mysqld restart
  • Dyna fe.

Dyma rai enghreifftiau o orchmynion SQL:

Newidiwch y set nodau ddiofyn a phob colofn nodau yn y tabl i'r set nodau newydd ▼

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;

Os ydych ond yn addasu set nodau ddiofyn y tabl▼

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

Addasu set nodau maes ▼

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;

Gweld cod tabl ▼

SHOW CREATE TABLE tbl_name;

Gweld Codau Maes ▼

SHOW FULL COLUMNS FROM tbl_name;

Gweld cod cronfa ddata cyfredol ▼

SHOW VARIABLES LIKE 'character_set_%';
  • Mae'r pecyn gyrrwr mysql-connector-java yn cefnogi utf5.1.13mb8 yn 4+ yn unig

Blog Chen Weiliang Gobeithio ( https://www.chenweiliang.com/ ) wedi'i rannu "Sut i arbed Emoji i mewn i MySQL? Rhowch y gronfa ddata Emoji mynegiant problem nod cwestiwn nod", sy'n ddefnyddiol i chi.

Croeso i chi rannu dolen yr erthygl hon:https://www.chenweiliang.com/cwl-26592.html

Croeso i sianel Telegram o blog Chen Weiliang i gael y diweddariadau diweddaraf!

🔔 Byddwch y cyntaf i gael y "Canllaw Defnydd Offer AI Marchnata Cynnwys ChatGPT" gwerthfawr yng nghyfeiriadur uchaf y sianel! 🌟
📚 Mae'r canllaw hwn yn cynnwys gwerth enfawr, 🌟Mae hwn yn gyfle prin, peidiwch â'i golli! ⏰⌛💨
Rhannwch a hoffwch os hoffech chi!
Eich rhannu a'ch hoff bethau yw ein cymhelliant parhaus!

 

发表 评论

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. 必填 项 已 用 * Label

sgroliwch i'r brig