PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်တရုတ်ဇာတ်ကောင်များသည်ဒေတာဘေ့စ်နှင့်ရှေ့အဆုံးဒေတာထုတ်လွှင့်သည့်အခါဘုံပြ problem နာဖြစ်သည်။ အထူးသဖြင့် MySQLI :: Get_chariSet နှင့် JSONS_CENDOCDEDE ကိုအသုံးပြုသည့်အခါ, ဇာတ်ကောင်အစုံမှန်ကန်စွာ configure မဟုတ်လျှင်တရုတ်နိုင်ငံ၏အကြောင်းအရာကိုရှုပ်ထွေးစေနိုင်သည်။ ဤဆောင်းပါးသည်ဤပြ problem နာကိုမည်သို့ဖြေရှင်းရမည်ကိုရှင်းပြပြီး MySQL ဒေတာဘေ့စ်နှင့်အပြန်အလှန်ဆက်သွယ်သောအခါတရုတ်စာလုံးများကိုမှန်ကန်စွာဖြတ်သန်းသွားနိုင်သည်။
ပထမအချက်မှာ Database connection ကိုမှန်ကန်စွာကိုင်တွယ်နိုင်အောင် Database connection ကိုချိတ်ဆက်နိုင်အောင် City set ကို UTF-8 သို့မှန်ကန်စွာသတ်မှတ်ထားကြောင်းသေချာအောင်လုပ်ပါ။ MySQLI extension ကိုဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန် MySQLI :: Get_charset ကို အသုံးပြုသည်။ ဇာတ်ကောင်အစုံသည် UTF-8 သည် utf-8 သည်ကျောက်တုံးပြ problem နာကိုဖြေရှင်းရာတွင်အဓိကခြေလှမ်းဖြစ်သည်။
<?php
// ဒေတာဘေ့စ်ကိုဆက်သွယ်ပါ
$mysqli = new mysqli('localhost', 'root', '', 'test_db');
// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($mysqli->connect_error) {
die('ဆက်သွယ်မှုမအောင်မြင်ပါ: ' . $mysqli->connect_error);
}
// ဇာတ်ကောင်ကိုသတ်မှတ်ပါ UTF-8
$mysqli->set_charset('utf8');
// လက်ရှိဇာတ်ကောင်အစုံရယူပါ
$current_charset = $mysqli->get_charset();
echo "လက်ရှိဇာတ်ကောင်အစုံ: " . $current_charset->charset;
// ဒေတာဘေ့စ်မေးမြန်းမှုနှင့် output ကိုတရုတ်ဒေတာလုပ်ဆောင်ပါ
$query = "SELECT name FROM users WHERE id = 1";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
// output query ကိုရလဒ်များ
echo json_encode($row);
?>
ဒေတာဘေ့စ်မှတရုတ်အချက်အလက်များကိုရှာဖွေပြီး JSONS_CENDODE မှတဆင့် encode လုပ်သည့်အခါ json_entode မှတစ်ဆင့် encode လုပ်သည့်အခါ, ဒါကိုရှောင်ရှားရန်တရုတ်အက္ခရာများမှလွတ်လွတ်လပ်လပ်မသွားစေရန် JSON_UNSESesSested_unicode parameter ကိုသုံးနိုင်သည်။
<?php
// ဒေတာဘေ့စ်ကိုဆက်သွယ်ပါ
$mysqli = new mysqli('localhost', 'root', '', 'test_db');
// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($mysqli->connect_error) {
die('ဆက်သွယ်မှုမအောင်မြင်ပါ: ' . $mysqli->connect_error);
}
// ဇာတ်ကောင်ကိုသတ်မှတ်ပါ UTF-8
$mysqli->set_charset('utf8');
// လက်ရှိဇာတ်ကောင်အစုံရယူပါ
$current_charset = $mysqli->get_charset();
echo "လက်ရှိဇာတ်ကောင်အစုံ: " . $current_charset->charset;
// ဒေတာဘေ့စ်မေးမြန်းမှုနှင့် output ကိုတရုတ်ဒေတာလုပ်ဆောင်ပါ
$query = "SELECT name FROM users WHERE id = 1";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
// အသုံးပြု json_encode output ကိုတရုတ်,တရုတ်အက္ခရာများမလွတ်မြောက်ရန်သေချာအောင်လုပ်ပါ
echo json_encode($row, JSON_UNESCAPED_UNICODE);
?>
အကယ်. သင်အသုံးပြုနေသောဒေတာဘေ့စ်စားပွဲဇာတ်ကောင်သတ်မှတ်ချက်သည် UTF-8 မဟုတ်လျှင်သင်သည်ဇာတ်ကောင်ဘာသာပြောင်းခြင်းပြ problems နာများကိုသင်ကြုံတွေ့ရနိုင်သည်။ ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်တစ်လျှောက်လုံးတွင်ဆံပင်အိတ်ကုဒ်မရှိသေးကြောင်းသေချာစေရန်အောက်ပါပစ္စည်းများစစ်ဆေးရန်အကြံပြုသည်။
ဒေတာဘေ့စ်၏ဇာတ်ကောင်အစု: UTF8MB4 သို့မဟုတ် UTF8 ကို သုံးပါ။
Data Tables ၏ဇာတ်ကောင် set set: အောက်ပါ SQL Queries သည်စားပွဲ၌ဇာတ်ကောင်အစုကိုကြည့်ရှုရန်နှင့်ပြုပြင်ရန်အတွက်အသုံးပြုနိုင်သည်။
SHOW CREATE TABLE users;
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ချိတ်ဆက်ထားသောဇာတ်ကောင် set: PHP တွင် MySQLI-> SET_CHARSet ('UTF8') မှသတ်မှတ်ထားပါ။
အထက်ဖော်ပြပါပြင်ဆင်မှုအပြင် browser သည်တရုတ်အချက်အလက်များကိုမှန်ကန်စွာဖြည့်ဆည်းပေးနိုင်ရန်သေချာစေရန်လည်းသော့ချက်ဖြစ်သည်။ ဘုံအလေ့အကျင့်တစ်ခုမှာအောက်ပါ Meta tag ကို web page တစ်ခု၏ <head> tag ကိုထည့်ရန်ဖြစ်သည်။
<meta charset="UTF-8">
ဤသည် browserer သည်တရုတ်စာလုံးများကိုမှန်ကန်စွာခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်အမှိုက်သရိုက်များကိုရှောင်ရှားရန်သေချာစေသည်။
MySQLI :: Get_Charet ကို အသုံးပြုသောအခါတရုတ်ဇာတ်ကောင်အပြောင်းအလဲအတွက် JSONS_COCTEDTED နှင့်အတူ JSONS_COCTEDTED နှင့်အတူဇာတ်ကောင် set ကိုမှန်ကန်စွာ configure လုပ်ခြင်းသည် carbled code ပြ problems နာများကိုရှောင်ရှားရန်သော့ချက်ဖြစ်သည်။ ဒေတာဘေ့စ် connection character set ကို UTF8 (သို့ ) UTF8MB4 ကိုသတ်မှတ်ပြီး JSONS_NESTECTED_UNCOCEDETAMETAMETATE ကို json_encode ကို ထိရောက်စွာရှောင်ရှားနိုင်အောင်သေချာအောင်လုပ်ပါ။
ဤဆောင်းပါးကိုမိတ်ဆက်ပေးခြင်းဖြင့် MySQLI နှင့် JSONS_CENCOCDEDED ကို အသုံးပြုသောအခါတရုတ်၏ carbled code ကြောင့်ဖြစ်ပေါ်လာသောပြ troubl နာများကိုရှောင်ရှားရန်သင့်အားကူညီသင့်သည်။