Мақала анықтамалығы
Эмодзи өрнегі utf8 кодтауында сақталсаMySQL деректер қорынемесе MariaDB, оны көрсету мүмкін емес.
Неліктен дерекқорға енгізілген эмодзи өрнегі сұрақ белгісіне айналады?
Эмодзи өрнектері 4 байт таңбалар болғандықтан және utf8 таңбалар жиыны 1-3 байт таңбаларды ғана қолдайтындықтан, эмодзи өрнектерін дерекқорға жазу мүмкін емес.
Дерекқорға енгізілген эмодзи өрнегі сұрақ белгісіне айналу мәселесін қалай шешуге болады?
2 шешім бар:
- Төрт байтты таңбаларды теңшелетін таңбалармен ауыстыра отырып, мәтінді қолмен енгізіңіз.
- өзгерту MySQL Дерекқор таңбалар жиыны, дерекқор таңбалар жиынын utf8-ден utf8mb4-ке өзгерту, 1-4 байт таңбаларды қолдау.
Шын мәнінде, бірінші әдіс тым көп жұмыс және ұсынылмайды.
Екінші шешімді пайдалану ұсынылады, MySQL дерекқор таңбалар жиынын өзгерту.
MySQL 5.5.3 нұсқасынан бастап дерекқор 4 байттан тұратын utf8mb4 таңбалар жинағына қолдау көрсете алады және таңбада 4 байтқа дейін болуы мүмкін, осылайша ол көбірек таңбалар жиынын қолдай алады және эмодзи өрнектерін сақтай алады.
- MySQL 5.5.3 нұсқасынан кейін сіз негізінен utf8mb4 таңбалар жинағына үздіксіз жаңарта аласыз.
- Сонымен қатар, utf8mb4 utf8 таңбалар жиынымен үйлесімді.
- utf8 таңбаларының кодталуы, орналасуы және сақталуы utf8mb4 ішінде.
- utf8 таңбалар жиынымен бірдей, бар деректерге зақым келтірмейді.
БайланыстыPhpMyAdminЖаңадан жасалған дерекқордағы жаңадан жасалған кестелер үшін әдепкі таңба кодтауы:Latin1
- Бұл кодтау қытай және эмодзи өрнектерін кірістіре алмайды;
- Дерекқор таңбалар жиыны мен кестесінің таңбалар жиынын кодтауын utf8mb4 етіп өзгерту керек;
- Содан кейін MySQL-ті қайта іске қосыңыз, қытай және эмодзи өрнектерін кірістіре аласыз.
MySQL эмодзи таңба мәселесінің шешімі
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 драйвер пакеті 5.1.13+ нұсқаларында utf8mb4 ғана қолдайды.
Hope Chen Weiliang блогы ( https://www.chenweiliang.com/ ) бөлісті "Эмоджилерді MySQL-ге қалай сақтауға болады? Дерекқорға эмодзи өрнегі сұрақ белгісі таңба мәселесін енгізіңіз", бұл сізге пайдалы.
Осы мақаланың сілтемесін бөлісуге қош келдіңіз:https://www.chenweiliang.com/cwl-26592.html
Соңғы жаңартуларды алу үшін Чен Вэйлян блогының Telegram арнасына қош келдіңіз!
📚 Бұл нұсқаулықта үлкен құндылық бар, 🌟Бұл сирек мүмкіндік, оны жіберіп алмаңыз! ⏰⌛💨
Ұнаса лайк басып, бөлісіңіз!
Сіздің бөлісулеріңіз бен лайктарыңыз - біздің үздіксіз мотивациямыз!