Cyfeiriadur Erthygl
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:
- Teipiwch destun â llaw, gan ddisodli cymeriadau pedwar beit gyda nodau arferol.
- 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.cnf
Lleoliad. - Panel Rheoli CWPMae'r ffeil my.cnf, yn
/etc/my.cnf
Lleoliad.
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 ▼
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!
📚 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!