Эможийг MySQL-д хэрхэн хадгалах вэ? Өгөгдлийн санд эможи илэрхийллийн асуултын тэмдэгтийн асуудлыг оруулна уу

Хэрэв эможи илэрхийлэл utf8 кодчилолд хадгалагдсан болMySQL мэдээллийн санэсвэл MariaDB, үүнийг харуулах боломжгүй.

Өгөгдлийн санд оруулсан эможи илэрхийлэл яагаад асуултын тэмдэг болдог вэ?

Эможи илэрхийлэл нь 4 байт тэмдэгт бөгөөд utf8 тэмдэгтийн багц нь зөвхөн 1-3 байт тэмдэгтийг дэмждэг тул эможи илэрхийллийг мэдээллийн санд бичих боломжгүй.

Өгөгдлийн санд оруулсан эможи илэрхийлэл асуултын тэмдэг болж хувирсан асуудлыг хэрхэн шийдвэрлэх вэ?

2 шийдэл байна:

  1. Текстийг гараар оруулж, дөрвөн байт тэмдэгтийг захиалгат тэмдэгтүүдээр солино.
  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 хяналтын самбар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';

Дараах эсэхийг шалгана уу ▼

Эможийг MySQL-д хэрхэн хадгалах вэ? Өгөгдлийн санд эможи илэрхийллийн асуултын тэмдэгтийн асуудлыг оруулна уу

Дараах 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 драйверын багц нь зөвхөн 5.1.13+ хувилбарт utf8mb4-ийг дэмждэг.

Hope Chen Weiliang блог ( https://www.chenweiliang.com/ ) "MySQL-д эможи хэрхэн хадгалах вэ? Өгөгдлийн санд эможи илэрхийллийн асуултын тэмдэгтийн асуудлыг оруулна уу" гэсэн нь танд тустай.

Энэ нийтлэлийн холбоосыг хуваалцахад тавтай морилно уу:https://www.chenweiliang.com/cwl-26592.html

Чен Вэйляны блогын Telegram сувагт тавтай морил, хамгийн сүүлийн үеийн мэдээг аваарай!

🔔 Сувгийн шилдэг лавлахаас "ChatGPT Content Marketing AI Tool Usage Guide"-г хамгийн түрүүнд аваарай! 🌟
📚 Энэхүү гарын авлага нь асар их үнэ цэнийг агуулсан, 🌟Энэ бол ховор боломж, бүү алдаарай! ⏰⌛💨
Хэрэв танд таалагдвал лайк дарж, хуваалцаарай!
Таны хуваалцах, дуртай зүйл бол бидний байнгын урам зориг юм!

 

发表 评论

Таны имэйл хаяг нийтлэгдэхгүй. 必填 项 已 用 дээр ажиллаж байна * 标注

滚动 到 顶部