مقالې لارښود
که د ایموجي اظهار په utf8 کوډ کولو کې زیرمه شوی ويد MySQL ډیټابیسیا MariaDB، دا نشي ښودل کیدی.
ولې ډیټابیس ته د ایموجي بیان د پوښتنې نښه نښه بدلیږي؟
ځکه چې د ایموجي څرګندونې د 4 بایټ حروف دي، او د utf8 کرکټر سیټ یوازې د 1-3 بایټ حروف ملاتړ کوي، د ایموجي څرګندونې په ډیټابیس کې نشي لیکل کیدی.
د دې ستونزې حل کولو څرنګوالی چې ډیټابیس ته د ایموجي بیان د پوښتنې نښه نښه بدلیږي؟
دوه حلونه شتون لري:
- متن په لاسي ډول دننه کړئ، د څلور بایټ حروف د دودیز حروفونو سره ځای په ځای کړئ.
- بدلول مای د ډیټابیس کرکټر سیټ، د ډیټابیس کرکټر سیټ له 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 Emoji کرکټر ستونزې حل
په 1 کې:د MySQL تشکیلاتو فایل بدل کړئ my.cnf
- (د وینډوز سرور 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
دریم ګام: د کرکټر سیټ بیا چیک کړئ او د 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 ملاتړ کوي
امید چن وییلینګ بلاګ ( https://www.chenweiliang.com/ ) شریک کړ " څنګه په MySQL کې ایموجي خوندي کړو؟ ډیټابیس کې د ایموجي څرګندونې پوښتنې نښه کرکټر ستونزه داخل کړئ"، کوم چې ستاسو لپاره ګټور دی.
د دې مقالې لینک شریکولو ته ښه راغلاست:https://www.chenweiliang.com/cwl-26592.html
د وروستي تازه معلوماتو ترلاسه کولو لپاره د چن ویلیانګ بلاګ ټیلیګرام چینل ته ښه راغلاست!
📚 دا لارښود لوی ارزښت لري، 🌟دا یو نادر فرصت دی، له لاسه مه ورکوئ! ⏰⌛💨
که مو خوښه شوه لایک او شریک کړئ!
ستاسو شریکول او خوښول زموږ دوامداره هڅونه ده!