လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ISO-8859-1 နှင့် UTF-8 encoding ပြ problems နာများကို MB_Get_info မှတစ်ဆင့်မည်သို့ခွဲခြားသတ်မှတ်ရမည်နည်း

ISO-8859-1 နှင့် UTF-8 encoding ပြ problems နာများကို MB_Get_info မှတစ်ဆင့်မည်သို့ခွဲခြားသတ်မှတ်ရမည်နည်း

gitbox 2025-05-29

PPP ဖွံ့ဖြိုးတိုးတက်မှုတွင် string encoding encoding ကိစ္စများနှင့်ဆက်ဆံရာတွင် ISO-8859-1 နှင့် UTF-8 သည်ရှုပ်ထွေးမှုများကိုဖြစ်ပေါ်စေနိုင်သော encoding format နှစ်ခုဖြစ်သည်။ မမှန်ကန်သော encoding concled code concled code, ဒေတာထုတ်လွှင့်မှုပျက်ကွက်ခြင်းနှင့်စနစ်ပျက်သွားခြင်းတို့ကို ဦး ဆောင်လမ်းပြနိုင်သည်။ ကံကောင်းထောက်မစွာပင် PHP ၏ MB_GEGET_InFO () function သည်လက်ရှိ Multibyte String Reading ပတ်ဝန်းကျင်ကိုထိရောက်စွာခွဲခြားသိမြင်စေပြီးနောက်ဆက်တွဲ encoding processing အတွက်ယုံကြည်စိတ်ချရသောအခြေခံကိုအထောက်အကူပြုနိုင်သည်။

mb_get_info ()?

MB_Get_info () သည်လက်ရှိ Mbstring တွင် configuration information ကိုပြန်ပို့နိုင်သည့် PHP Multibyte String Extension ( Mbstring ) မှပေးသော function တစ်ခုဖြစ်ပါတယ်။ ဤအချက်အလက်မှတစ်ဆင့်လက်ရှိအသုံးပြုထားသောအတွင်းပိုင်း encoding ( internal_encoding ), http input ကို encoding ( http_input , http_output ) စသည်ဖြင့်ကျွန်ုပ်တို့ကိုကျွန်ုပ်တို့နားလည်နိုင်သည်။

လုပ်ဆောင်ချက်၏အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

 <?php
// အားလုံးရယူပါmbstringချိန်ညှိချက်များသတင်းအချက်အလက်
$info = mb_get_info();
print_r($info);

// သတ်သတ်မှတ်မှတ် configuration ကိုသာရယူပါ,ဥပမာအားဖြင့်"internal_encoding"
$encoding = mb_get_info('internal_encoding');
echo $encoding;
?>

အဘယ်ကြောင့် ISO-8859-1 နှင့် UTF-8 မကြာခဏရှုပ်ထွေး?

ISO-8859-1 သည်အနောက်ဥရောပဘာသာစကားဝက်ဘ်စာမျက်နှာများအစောပိုင်းတွင်မကြာခဏအသုံးပြုလေ့ရှိသောတစ်ခုတည်း byte encoding ဖြစ်သည်။ UTF-8 သည် ASCII နှင့်လိုက်ဖက်သော variable-lumti-byte encoding တစ်ခုဖြစ်သည်။

ပြနာမှာ - ဆာဗာပုံမှန်ချိန်ညှိချက်များသို့မဟုတ်သက်ကြီးရွယ်အိုစနစ်များတွင် ISO-8859-1 ကို default encoding အဖြစ်အသုံးပြုနေဆဲဖြစ်သည်။ PHP script လုပ်ငန်းစဉ်များသည် UTF-8 encoded input အချက်အလက်များ (ဥပမာ API တောင်းဆိုမှုများကဲ့သို့သောစာရင်းတင်သွင်းခြင်းကဲ့သို့သော) ကိုစနစ်တကျပြုပြင်မွမ်းမံခြင်းမပြုပါက iso-8859-1 ကိုမှားယွင်းစွာဖော်ပြပါ။

ဥပမာအားဖြင့်သင်သည် https://gitbox.net/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/pory မှဆွဲထုတ်ပါက,

အသိအမှတ်ပြုခြင်းနှင့်ပြုပြင်ခြင်းအတွက်ကူညီရန် MB_GEGET_INFO ကိုမည်သို့အသုံးပြုရမည်နည်း။

MB_GET_INFO () ကို ရှာဖွေရန်နှင့်ဖြေရှင်းရန်နှင့်ဖြေရှင်းရန်အတွက်အောက်ပါအဆင့်များကိုကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။

1 ။ လက်ရှိပြည်တွင်းရေးကုဒ်ကိုစစ်ဆေးပါ

လက်ရှိပတ်ဝန်းကျင်၏အတွင်းပိုင်း encoding settings ကိုပထမ ဦး ဆုံးစစ်ဆေးပါ။

 <?php
$internalEncoding = mb_get_info('internal_encoding');
echo "ယခုInternal Encoding: " . $internalEncoding;
?>

အကယ်. ၎င်းသည် UTF-8 မဟုတ်ပါ (ဥပမာအားဖြင့် ISO-8859-1 ) မဟုတ်ကြောင်းတွေ့ရှိပါက၎င်းသည်နောက်ဆက်တွဲအမှိုက်သရိုက်များထဲမှတစ်ခုဖြစ်ဖွယ်ရှိသည်။

2 ။ dynamically encoding settings ကိုညှိ

အကယ်. ပတ်ဝန်းကျင်ကိုမျှော်လင့်ချက်များနှင့်မကိုက်ညီစေရန်တွေ့ရှိပါက script ကိုအစပြုသောအခါသင် encoding ကိုပြောင်းလဲနိုင်သည်။

 <?php
// အတွင်းပိုင်း encoding ကိုသတ်မှတ်ပါUTF-8
mb_internal_encoding('UTF-8');

// မှ input ကိုနှင့် output ကိုသတ်မှတ်UTF-8
mb_http_input('UTF-8');
mb_http_output('UTF-8');
?>

ဤနည်းအားဖြင့်၎င်းသည် form input ကိုပြောင်းလဲခြင်း, ဒေတာဘေ့စ်အပြန်အလှန်ဆက်သွယ်မှု, သို့မဟုတ် https://gitbox.net/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/api/get-data ကဲ့သို့သောခေါ်ဆိုမှုဖြစ်စေ,

3 ။ Input Data Encoding ကိုစစ်ဆေးပါ

ပတ် 0 န်းကျင်ဆိုင်ရာဖွဲ့စည်းပုံနှင့်ပတ် 0 န်းကျင်ဆိုင်ရာဖွဲ့စည်းပုံအပြင်အချက်အလက်များကို encoded နှင့်ရှာဖွေတွေ့ရှိရန်လိုအပ်သည်။ ဥပမာအားဖြင့်, သင် encoding type ကိုသူကိုယ်တိုင်ဆုံးဖြတ်ရန် MB_DetEct_encoding () ကိုသုံးနိုင်သည်။

 <?php
$data = file_get_contents('https://gitbox.net/api/get-data');

$encoding = mb_detect_encoding($data, ['UTF-8', 'ISO-8859-1', 'ASCII'], true);

if ($encoding !== 'UTF-8') {
    // အကြောင်းအရာများကိုပြောင်းပါUTF-8
    $data = mb_convert_encoding($data, 'UTF-8', $encoding);
}

echo $data;
?>

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

အကျဉ်းချုပ်

MB_Get_info () , လက်ရှိ PHP operating envirations encoding encoding encoding configuration ကိုအလွယ်တကူနားလည်နိုင်ပြီး ISO-8859-1 နှင့် UTF-8 ကိုရောစပ်ခြင်းကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုအလွယ်တကူနားလည်နိုင်သည်။ ပြည်တွင်းရေး coding နှင့် input and input ကို coding ကို dynamically setting လုပ်ခြင်းနှင့်အတူပူးပေါင်းဆောင်ရွက်ခြင်းအပြင်ပြင်ပဒေတာ coding ကိုရှာဖွေတွေ့ရှိပါက,

ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်၏တသမတ်တည်းပြင်ဆင်မှုသည်အညီအမျှအရေးပါသည်ကိုမမေ့ပါနှင့်။ UTF-8 ကို PHP.INI သို့မဟုတ် NGINX ဆာဗာအလွှာတွင်တူညီစွာရောနှောထားနိုင်ပါက၎င်းသည်အနာဂတ်တွင် coding bug အမျိုးမျိုးကိုများစွာလျှော့ချလိမ့်မည်။