จะบันทึก Emoji ลงใน MySQL ได้อย่างไร เข้าสู่ฐานข้อมูล เครื่องหมายคำถาม เครื่องหมายคำถาม นิพจน์ Emoji

หากนิพจน์ Emoji ถูกเก็บไว้ในการเข้ารหัส utf8ฐานข้อมูล MySQLหรือ MariaDB ไม่สามารถแสดงได้

เหตุใดนิพจน์ Emoji ที่ป้อนลงในฐานข้อมูลจึงกลายเป็นอักขระเครื่องหมายคำถาม

เนื่องจากนิพจน์ Emoji เป็นอักขระ 4 ไบต์ และชุดอักขระ utf8 รองรับเฉพาะอักขระ 1-3 ไบต์ นิพจน์ Emoji จึงไม่สามารถเขียนลงในฐานข้อมูลได้

วิธีแก้ปัญหาที่นิพจน์ Emoji ที่ป้อนลงในฐานข้อมูลกลายเป็นอักขระเครื่องหมายคำถาม?

มี 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ลินุกซ์เซิร์ฟเวอร์คือ 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';

ตรวจสอบว่าสิ่งต่อไปนี้ ▼

จะบันทึก Emoji ลงใน MySQL ได้อย่างไร เข้าสู่ฐานข้อมูล เครื่องหมายคำถาม เครื่องหมายคำถาม นิพจน์ Emoji

ป้อนคำสั่ง 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

ยินดีต้อนรับสู่ช่อง Telegram ของบล็อกของ Chen Weiliang เพื่อรับข่าวสารล่าสุด!

🔔 เป็นคนแรกที่ได้รับ "คู่มือการใช้งานเครื่องมือ AI การตลาดเนื้อหา ChatGPT" อันทรงคุณค่าในไดเรกทอรีด้านบนของช่อง! 🌟
📚 คู่มือนี้มีคุณค่ามหาศาล 🌟 นี่เป็นโอกาสที่หายาก อย่าพลาด! ⏰⌛💨
แชร์และชอบถ้าคุณชอบ!
การแบ่งปันและไลค์ของคุณเป็นแรงจูงใจอย่างต่อเนื่องของเรา!

 

发表评论

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่ 必填项已用 * 标注