လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ဇာတ်ကောင် encoding မသတ်မှတ်ပါ,

ဇာတ်ကောင် encoding မသတ်မှတ်ပါ,

M66 2025-05-31

MySQL ဒေတာဘေ့စ်ကို PHP တွင်အသုံးပြုသောအခါ MySQLI_RESURT function မှပြန်လာသော query querted ရလဒ်များတွင်သင်အမှိုက်ပုံပြ problem နာကိုသင်မကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ များသောအားဖြင့်, ဤဆောင်းပါးသည်အဘယ်ကြောင့် unset ဇာတ်ကောင် encoding ကိုအဘယ်ကြောင့် barbled query querted ရလဒ်များကိုဖြစ်ပေါ်စေပြီးဖြေရှင်းနည်းများကိုပေးမည်ကိုရှင်းပြပါလိမ့်မည်။

1 ။ ဇာတ်ကောင် encoding ဆိုတာဘာလဲ။

အက်ခရာ encoding သည်စာလုံးများကိုကွန်ပျူတာထဲတွင်သိမ်းဆည်းထားသည့်နှင့်ကိုယ်စားပြုသည့်နည်းလမ်းဖြစ်သည်။ ဘာသာစကားတစ်ခုစီ၏ဇာတ်ကောင်အစုံများကိုမှန်ကန်စွာပြသရန်ရှင်းရှင်းလင်းလင်း encoded လုပ်ရန်လိုအပ်သည်။ ဥပမာအားဖြင့် UTF-8 encoding သည်ကျယ်ပြန့်စွာအသုံးပြုသောအက္ခရာများကိုဘာသာစကားအမျိုးမျိုးဖြင့်ထောက်ပံ့နိုင်သည့်ကျယ်ပြန့်စွာအသုံးပြုသောဇာတ်ကောင်သတ်မှတ်ချက်တစ်ခုဖြစ်သည်။ အကယ်. အက်ခရာ encoding သည်ကိုက်ညီမှုမရှိပါကစနစ်သည်စာသားကိုမှန်ကန်စွာဖော်ထုတ်ပြီးပြသရန်နှင့်အမှီအခိုကင်းစွာပြသနိုင်လိမ့်မည်မဟုတ်ပါ။

2 ။ MySQL နှင့်ဇာတ်ကောင် encoding

MySQL ဒေတာဘေ့စ်တွင်ဒေတာဘေ့စ်တစ်ခုစီ, စားပွဲတင်, နေရာနှင့်ဆက်သွယ်မှုတစ်ခုစီတွင်ကိုယ်ပိုင်အက်ခရာ encoding ရှိနိုင်သည်။ ဒေတာဘေ့စ်၏ဆက်သွယ်မှု၏ character encoding သည်ဒေတာဘေ့စ်သို့မဟုတ်စားပွဲ၏ဇာတ်ကောင် encoding နှင့်ကိုက်ညီမှုမရှိပါကအမှိုက်များပြ problems နာများဖြစ်ပွားနိုင်သည်။

MySQLI_RESULT function ကိုအသုံးပြုသောအခါ, အထူးသဖြင့်, ဒေတာဘေ့စ်နှင့်စားပွဲတင်၏အကျင့်ကိုမသတ်မှတ်ပါက concled code တစ်ခုသို့မဟုတ်ဒေတာဘေ့စ်ဆက်သွယ်မှု၏အကျင့်ကိုမှန်ကန်စွာမသတ်မှတ်ပါ။

3 ။ mysqli_result function ကိုဘယ်လိုအလုပ်လုပ်သလဲ

MySQLI_RESELT သည် PHP ရှိ function တစ်ခုဖြစ်ပြီး MySQL query ၏ရလဒ်များကိုရရှိရန်ဖြစ်သည်။ SQL query ကို execute လုပ်ရန် MySQLI_QUESERY ကို အသုံးပြုသောအခါ MySQLI_RESult Object ကိုပြန်ပို့သည်။ ထို့နောက်ကျွန်ုပ်တို့သည် Fetch_assoc () , fetch_row () နှင့် query ရလဒ်များကိုရရန်အရာဝတ်ထုရှိအခြားနည်းလမ်းများကိုသုံးနိုင်သည်။

ဥပမာအားဖြင့်:

 $conn = mysqli_connect('localhost', 'username', 'password', 'database');
$result = mysqli_query($conn, "SELECT * FROM users");

while($row = mysqli_fetch_assoc($result)) {
    echo $row['name'];
}

အထက်ဖော်ပြပါကုဒ်သည်စုံစမ်းမှုရလဒ်၏လယ်ကွင်း အမည်မှာ တရုတ်စာလုံးများပါ 0 င်သည်ဟုယူဆရသော်, encoding ကိုမှန်ကန်စွာမသတ်မှတ်ပါက,

4 ။

ပုံမှန်အားဖြင့် MySQL ဆက်သွယ်မှု၏ဇာတ်ကောင်အစုံကို MySQL server ၏ configurations မှဆုံးဖြတ်သည်။ MySQL ဆာဗာ၏ဇာတ်ကောင်အစုသည်ကျွန်ုပ်တို့လုပ်ဆောင်လိုသည့်အချက်အလက်များကိုကိုက်ညီမှုမရှိပါက,

ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည်တရုတ်စာလုံးများကို MySQL ဒေတာဘေ့စ်တွင်သိုလှောင်ထားပြီးစားပွဲ၏ဇာတ်ကောင်အစုသည် UTF-8 ဖြစ်သည်ဆိုပါစို့။ သို့သော် PHP script သည်လက်တင် (i.E. ISO-8859-1) ကိုအသုံးပြုပါက Database သို့ဆက်သွယ်သောအခါ database မှပြန်လာသောအချက်အလက်များကို UTF-8 မဟုတ်ပါ။ သင်္ချိုင်းနှစ်ခုကွဲပြားခြားနားသောကြောင့်ပြန်လာသောတရုတ်ဇာတ်ကောင်များသည်အမှိုက်များပေါ်လာလိမ့်မည်။

5 ။

အက်ခရာ encoding ပြ problem နာကိုဖြေရှင်းရန်ဒေတာဘေ့စ် connection ချိတ်ဆက်သောအခါမှန်ကန်သောဇာတ်ကောင် encoding ကိုသတ်မှတ်ရန်သေချာစေရန်လိုအပ်သည်။ အက်ခရာ encoding ကိုအောက်ပါနည်းလမ်းများဖြင့်သတ်မှတ်နိုင်သည်။

connection character encoding set

ဒေတာဘေ့စ် connection တစ်ခုတည်ဆောက်ပြီးနောက် MySQLI_SESSESSet_Charet_charset () function ကိုသုံးပါ။

 $conn = mysqli_connect('localhost', 'username', 'password', 'database');
mysqli_set_charset($conn, 'utf8'); // ဇာတ်ကောင် encoding ကိုသတ်မှတ်ပါUTF-8

၎င်းသည် UTF-8 အက္ခရာများကို အသုံးပြု. ဒေတာဘေ့စ်ဆက်သွယ်မှုကို encoded ကြောင်းသေချာသည်။

ဒေတာဘေ့စ်များနှင့်စားပွဲများ၏အက်ခရာ encoding စစ်ဆေးပါ

ဒေတာဘေ့စ်နှင့်စားပွဲများ၏ဇာတ်ကောင် encoding ကိုလည်း UTF-8 သို့သတ်မှတ်ရန်သေချာစေရန်လိုအပ်သည်။ ဒေတာဘေ့စ်နှင့်စားပွဲများ၏ဇာတ်ကောင်အစုံများကိုအောက်ပါ SQL ထုတ်ပြန်ချက်များဖြင့်စစ်ဆေး။ ပြုပြင်နိုင်သည်။

  1. ဒေတာဘေ့စ်ဇာတ်ကောင် set ကိုကြည့်ပါ။

 SHOW CREATE DATABASE database_name;
  1. ဒေတာဘေ့စ်ဇာတ်ကောင် set ကိုပြင်ဆင်ပါ:

 ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
  1. စားပွဲ၌ဇာတ်ကောင်အစုံကိုကြည့်ပါ။

 SHOW TABLE STATUS FROM database_name;
  1. စားပွဲ၌ဇာတ်ကောင်အစုကိုပြုပြင်မွမ်းမံပါ။

 ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

client client ကို client ကို encoding set

အချို့ဖြစ်ရပ်များတွင်အောက်ပါ SQL ကြေငြာချက်ကိုကွပ်မျက်ခြင်းဖြင့် client clait clire ကိုသတ်မှတ်ရန်လည်းလိုအပ်နိုင်သည်။

 SET NAMES 'utf8';

၎င်းသည် 0 န်ဆောင်မှုခံယူသူနှင့် MySQL Server အကြားရှိဇာတ်ကောင် encoding သည်စုံစမ်းမှုကွပ်မျက်ခံရသောအခါတသမတ်တည်းဖြစ်ကြောင်းသေချာစေသည်။

6 ။ အကျဉ်းချုပ်

အထူးသဖြင့်စုံစမ်းမှုရလဒ်များရရန် MySQLI_RESURRESURRURSult function ကိုအသုံးပြုသောအခါ carbled carbled ည့်သည်ပြ problem နာကိုများသောအားဖြင့်ပြုလုပ်လေ့ရှိသည်။ အကယ်. အက်ခရာ Encoding ကိုမှန်ကန်စွာမသတ်မှတ်ပါက MySQL သည်ပုံမှန်ဇာတ်ကောင် (များသောအားဖြင့်လက်တင် 1) ကိုအသုံးပြုလိမ့်မည်။ ဤပြ problem နာကိုရှောင်ရှားရန်သင်သေချာသင့်သည် -

  1. ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်သောအခါမှန်ကန်သောဇာတ်ကောင် encoding (e.g. utf-8) ကိုသတ်မှတ်ပါ။

  2. ဒေတာဘေ့စ်, စားပွဲနှင့် 0 န်ဆောင်မှုခံယူသူ၏ဇာတ်ကောင်အစုံသည်တသမတ်တည်းဖြစ်ကြောင်းသေချာပါစေ။

  3. ပြ problems နာများကြုံတွေ့ရဆဲဖြစ်ပါက, utf8 အမည်များကို setting ကို setting ကို set throw name encoding ကိုသေချာစေရန် Setting ကိုသတ်မှတ်နိုင်သည်။

ဤနည်းလမ်းများမှတစ်ဆင့်မေးမြန်းမှုရလဒ်များကိုထိထိရောက်ရောက်ရှောင်ရှားနိုင်ပြီးအချက်အလက်များကိုမှန်ကန်စွာတင်ပြရန် concled code ကိုသေချာစေရန်သေချာစေနိုင်သည်။