MySQL database ကို MySQL ဒေတာဘေ့စ်ကို အသုံးပြု. အသုံးပြုသူထည့် 0 င်မှုအကြောင်းအရာများကိုအထူးသ ဖြင့် မှတ်ချက်များ, အမည်ပြောင်မှတ်တမ်းများကိုသိမ်းဆည်းသည့်အခါ,
ဘာဖြစ်လို့လဲဆိုတော့ MySQL databases (ဥပမာ UTF8 ကဲ့သို့သော UTF8 ကဲ့သို့) သည်ပုံမှန်ဇာတ်ကောင်များ (UTF8 ကဲ့သို့သော UTF8 ကဲ့သို့ unicode ဇာတ်ကောင်များကိုအပြည့်အ 0 မထောက်ပံ့သောကြောင့်ဖြစ်သည်။ ဤပြ problem နာကိုဖြေရှင်းရန် Database-Level Configuration အပြင် PHP condent ကို client နှင့်ချိတ်ဆက်ထားသောဇာတ်ကောင်သတ်မှတ်ချက်ကိုမှန်ကန်စွာသတ်မှတ်ရန်လိုအပ်သည်။ ဤဆောင်းပါးသည် MySQLI :: Get_charet Set ကိုစစ်ဆေးရန် Connect_ChariSet Set ကိုစစ်ဆေးရန်မည်သို့အသုံးပြုရမည်ကိုရှင်းပြပါလိမ့်မည်။
MySQL ၏ UTF8 encoding သည်အက်ခရာ 3 လုံးအထိပံ့ပိုးပေးပြီး Emoji နှင့် Unicode ဇာတ်ကောင်များသည် 4 bytes 4 ခုလိုအပ်သည်။ ထို့ကြောင့် UTF8MB4 ကို အသုံးပြုရမည်။ အကယ် . ဆာဗာဘေးထွက် (ဒေတာဘေ့စ်စားပွဲ, ကွင်းဆင်းများ,
များသောအားဖြင့်ကျွန်ုပ်တို့သည်အချက်သုံးချက်လုပ်ရန်လိုအပ်သည်။
ဒေတာဘေ့စ်နှင့်စားပွဲတင်အတွက်သတ်မှတ်ထားသည့်ဇာတ်ကောင်ကို UTF8MB4 သို့သတ်မှတ်သည်။
ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်သောအခါ UTF8MB4 ကို သတ်မှတ်ပါ။
PHP code တွင်အသုံးပြုသောစာလုံးသည်မှန်ကန်ကြောင်းစစ်ဆေးပါ။
PHP ၏ MySQLI အတန်းသည် Get_charet နည်းကိုထောက်ပံ့ပေးသည်။ ဤလုပ်ဆောင်မှုဖြင့်လက်ရှိဆက်သွယ်မှုသည် UTF8MB4 ကို အသုံးပြု. မကိုက်ညီပါက၎င်းကိုညှိနှိုင်းခြင်းရှိမရှိကုဒ်ကိုစစ်ဆေးနိုင်သည်။
နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
<?php
// ဒေတာဘေ့စ်ဆက်သွယ်မှုသတင်းအချက်အလက်
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($mysqli->connect_errno) {
die('ဆက်သွယ်မှုမအောင်မြင်ပါ: ' . $mysqli->connect_error);
}
// လက်ရှိဆက်သွယ်မှုဇာတ်ကောင် set ကိုစစ်ဆေးပါ
$charsetInfo = $mysqli->get_charset();
echo 'လက်ရှိဆက်သွယ်မှုဇာတ်ကောင်အစုံ: ' . $charsetInfo->charset . PHP_EOL;
// မရရှိလျှင် utf8mb4,ထို့နောက် set utf8mb4
if ($charsetInfo->charset !== 'utf8mb4') {
if (!$mysqli->set_charset('utf8mb4')) {
die('ဇာတ်ကောင်အစုံချမှတ်ရန်ပျက်ကွက်: ' . $mysqli->error);
} else {
echo 'ဆက်သွယ်မှုဇာတ်ကောင် set ကိုသတ်မှတ်ထားသည် utf8mb4' . PHP_EOL;
}
}
// ဥပမာ Insert တွင်ပါ 0 င်သည် Emoji ၏အချက်အလက်
$stmt = $mysqli->prepare('INSERT INTO messages (content) VALUES (?)');
$content = 'စမ်းသပ်မှု Emoji ?? ??';
$stmt->bind_param('s', $content);
if ($stmt->execute()) {
echo 'ဒေတာသွင်းအောင်မြင်စွာ!' . PHP_EOL;
} else {
echo 'မအောင်မြင်ပါ: ' . $stmt->error . PHP_EOL;
}
$stmt->close();
$mysqli->close();
?>
Emoji နှင့်အခြား 4-byte ဇာတ်ကောင်များကိုအပြည့်အဝထောက်ခံရန်, code-level settings အပြင်သင်လည်းလိုအပ်သည်။
ဒေတာဘေ့စ, စားပွဲတင်နှင့်ကွင်းဆင်းဇာတ်ကောင် settings:
ALTER DATABASE your_database CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE your_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Connection parameters များ - MySQL configuration file ၏ MySQL configuration file ၏အစိတ်အပိုင်းကိုသေချာအောင်လုပ်ပါ။
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
MySQLI :: Get_charet ကို အသုံးပြုခြင်းသည်ဆက်သွယ်မှုဇာတ်ကောင် set ကိုကျွန်ုပ်တို့၏ code တွင်မှန်ကန်မှုရှိ, ဒေတာဘေ့စ်များနှင့်စားပွဲများ၏မှန်ကန်သော configuration ကိုပေါင်းစပ်ပြီး Unicode Emoji မသိမ်းဆည်းနိုင်သည့်ပြ problem နာကိုလုံးဝဖြေရှင်းနိုင်သည်။ ဤနည်းအားဖြင့်အသုံးပြုသူများသည်သင်၏ application တွင် emojis အမျိုးမျိုးကို သုံး. ဆုံးရှုံးမှုသို့မဟုတ်အမှိုက်များနှင့်အတူစိုးရိမ်ပူပန်ခြင်းမရှိဘဲလွယ်ကူစွာအသုံးပြုနိုင်သည်။