ລາຍການຫົວເລື່ອງ
ຖ້າການສະແດງອອກ Emoji ຖືກເກັບໄວ້ໃນການເຂົ້າລະຫັດ utf8ຖານຂໍ້ມູນ MySQLຫຼື MariaDB, ມັນບໍ່ສາມາດສະແດງໄດ້.
ເປັນຫຍັງການສະແດງອອກ Emoji ທີ່ເຂົ້າໄປໃນຖານຂໍ້ມູນຈຶ່ງກາຍເປັນເຄື່ອງໝາຍຄໍາຖາມ?
ເນື່ອງຈາກວ່າການສະແດງອອກ Emoji ແມ່ນຕົວອັກສອນ 4-byte, ແລະຊຸດຕົວອັກສອນ utf8 ຮອງຮັບພຽງແຕ່ 1-3 bytes ຂອງຕົວອັກສອນ, Emoji expression ບໍ່ສາມາດຂຽນເຂົ້າໄປໃນຖານຂໍ້ມູນໄດ້.
ວິທີການແກ້ໄຂບັນຫາທີ່ສະແດງອອກ Emoji ເຂົ້າໄປໃນຖານຂໍ້ມູນກາຍເປັນເຄື່ອງຫມາຍຄໍາຖາມ?
ມີ 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';
ກວດເບິ່ງວ່າຕໍ່ໄປນີ້ ▼
ໃສ່ຄໍາສັ່ງ 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 ເພື່ອຮັບອັບເດດຫຼ້າສຸດ!
📚ຄູ່ມືນີ້ມີຄຸນຄ່າອັນມະຫາສານ, 🌟ນີ້ເປັນໂອກາດທີ່ຫາຍາກ, ຢ່າພາດມັນ! ⏰⌛💨
Share and like ຖ້າມັກ!
ການແບ່ງປັນແລະການຖືກໃຈຂອງທ່ານແມ່ນການຊຸກຍູ້ຢ່າງຕໍ່ເນື່ອງຂອງພວກເຮົາ!