ວິທີການບັນທຶກ Emoji ເຂົ້າໄປໃນ MySQL?

ຖ້າການສະແດງອອກ Emoji ຖືກເກັບໄວ້ໃນການເຂົ້າລະຫັດ utf8ຖານຂໍ້ມູນ MySQLຫຼື MariaDB, ມັນບໍ່ສາມາດສະແດງໄດ້.

ເປັນຫຍັງການສະແດງອອກ Emoji ທີ່ເຂົ້າໄປໃນຖານຂໍ້ມູນຈຶ່ງກາຍເປັນເຄື່ອງໝາຍຄໍາຖາມ?

ເນື່ອງຈາກວ່າການສະແດງອອກ Emoji ແມ່ນຕົວອັກສອນ 4-byte, ແລະຊຸດຕົວອັກສອນ utf8 ຮອງຮັບພຽງແຕ່ 1-3 bytes ຂອງຕົວອັກສອນ, Emoji expression ບໍ່ສາມາດຂຽນເຂົ້າໄປໃນຖານຂໍ້ມູນໄດ້.

ວິທີການແກ້ໄຂບັນຫາທີ່ສະແດງອອກ Emoji ເຂົ້າໄປໃນຖານຂໍ້ມູນກາຍເປັນເຄື່ອງຫມາຍຄໍາຖາມ?

ມີ 2 ວິ​ທີ​ແກ້​ໄຂ​:

  1. ປ້ອນຂໍ້ຄວາມດ້ວຍຕົນເອງ, ແທນທີ່ຕົວອັກສອນສີ່ໄບຕ໌ດ້ວຍຕົວອັກສອນທີ່ກຳນົດເອງ.
  2. ປັບປຸງແກ້ໄຂ MySQL ຊຸດຕົວອັກສອນຖານຂໍ້ມູນ, ປ່ຽນຊຸດຕົວອັກສອນຖານຂໍ້ມູນຈາກ utf8 ເປັນ utf8mb4, ຮອງຮັບຕົວອັກສອນ 1-4 byte.

ໃນຄວາມເປັນຈິງ, ວິທີທໍາອິດແມ່ນເຮັດວຽກຫຼາຍເກີນໄປແລະບໍ່ແນະນໍາ.

ແນະນໍາໃຫ້ໃຊ້ການແກ້ໄຂທີສອງ, ແກ້ໄຂຊຸດຕົວອັກສອນຖານຂໍ້ມູນ MySQL.

ເລີ່ມຕົ້ນຈາກສະບັບ MySQL 5.5.3, ຖານຂໍ້ມູນສາມາດສະຫນັບສະຫນູນຊຸດຕົວອັກສອນ utf4mb8 ຂອງ 4 ໄບຕ໌, ແລະຕົວອັກສອນສາມາດມີເຖິງ 4 ໄບຕ໌, ດັ່ງນັ້ນມັນສາມາດສະຫນັບສະຫນູນຊຸດຕົວອັກສອນຫຼາຍ, ແລະຍັງສາມາດເກັບຮັກສາ Emoji ສະແດງອອກ.

  • ຫຼັງຈາກ MySQL 5.5.3, ໂດຍພື້ນຖານແລ້ວທ່ານສາມາດອັບເກຣດເປັນຊຸດຕົວອັກສອນ utf8mb4.
  • ໃນເວລາດຽວກັນ, utf8mb4 ແມ່ນເຫມາະສົມກັບຊຸດຕົວອັກສອນ utf8.
  • ການເຂົ້າລະຫັດ, ຕໍາແຫນ່ງແລະການເກັບຮັກສາຕົວອັກສອນ utf8 ຢູ່ໃນ utf8mb4.
  • ຄືກັນກັບຊຸດຕົວອັກສອນ utf8, ບໍ່ມີຄວາມເສຍຫາຍຕໍ່ຂໍ້ມູນທີ່ມີຢູ່.

ເນື່ອງ​ຈາກphpMyAdminສໍາລັບຕາຕະລາງທີ່ສ້າງຂຶ້ນໃຫມ່ໃນຖານຂໍ້ມູນທີ່ສ້າງຂຶ້ນໃຫມ່, ການເຂົ້າລະຫັດຕົວອັກສອນເລີ່ມຕົ້ນແມ່ນ:Latin1

  • ການເຂົ້າລະຫັດນີ້ບໍ່ສາມາດໃສ່ການສະແດງອອກຂອງຈີນ ແລະອີໂມຈິ;
  • ທ່ານຈໍາເປັນຕ້ອງປ່ຽນຕົວກໍານົດການເຂົ້າລະຫັດຂອງຊຸດຕົວອັກສອນຖານຂໍ້ມູນແລະຕາຕະລາງເປັນ utf8mb4;
  • ຫຼັງຈາກນັ້ນ, restart MySQL, ທ່ານສາມາດໃສ່ການສະແດງອອກຂອງຈີນແລະ Emoji.

ການແກ້ໄຂບັນຫາຕົວອັກສອນ 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';

ກວດເບິ່ງວ່າຕໍ່ໄປນີ້ ▼

ວິທີການບັນທຶກ Emoji ເຂົ້າໄປໃນ 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 ຮອງຮັບ utf5.1.13mb8 ໃນ 4+ ເທົ່ານັ້ນ.

ຫວັງ Chen Weiliang Blog ( https://www.chenweiliang.com/ ) ແບ່ງປັນ "ວິທີການບັນທຶກ Emoji ເຂົ້າໄປໃນ MySQL? ໃສ່ຖານຂໍ້ມູນ Emoji ສະແດງຄໍາຖາມບັນຫາຕົວອັກສອນ", ເຊິ່ງເປັນປະໂຫຍດສໍາລັບທ່ານ.

ຍິນດີຕ້ອນຮັບແບ່ງປັນການເຊື່ອມຕໍ່ຂອງບົດຄວາມນີ້:https://www.chenweiliang.com/cwl-26592.html

ຍິນດີຕ້ອນຮັບສູ່ຊ່ອງ Telegram ຂອງບລັອກຂອງ Chen Weiliang ເພື່ອຮັບອັບເດດຫຼ້າສຸດ!

🔔 ເປັນຜູ້ທຳອິດທີ່ໄດ້ຮັບ "ຄູ່ມືການໃຊ້ເຄື່ອງມືການຕະຫຼາດເນື້ອຫາ ChatGPT AI" ທີ່ມີຄຸນຄ່າໃນລາຍການທາງເທິງ! 🌟
📚ຄູ່ມືນີ້ມີຄຸນຄ່າອັນມະຫາສານ, 🌟ນີ້ເປັນໂອກາດທີ່ຫາຍາກ, ຢ່າພາດມັນ! ⏰⌛💨
Share and like ຖ້າມັກ!
ການ​ແບ່ງ​ປັນ​ແລະ​ການ​ຖືກ​ໃຈ​ຂອງ​ທ່ານ​ແມ່ນ​ການ​ຊຸກ​ຍູ້​ຢ່າງ​ຕໍ່​ເນື່ອງ​ຂອງ​ພວກ​ເຮົາ​!

 

评论评论

ທີ່ຢູ່ອີເມວຂອງທ່ານຈະບໍ່ຖືກເຜີຍແຜ່. ທົ່ງນາທີ່ກໍານົດໄວ້ແມ່ນຖືກນໍາໃຊ້ * ປ້າຍ ກຳ ກັບ

ເລື່ອນໄປເທິງສຸດ