လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MB_GEget_info ကို သုံး. အက်ခရာ encoding ပြောင်းခြင်းတွင် carbled ပြ problem နာကိုဖြေရှင်းရန်

MB_GEget_info ကို သုံး. အက်ခရာ encoding ပြောင်းခြင်းတွင် carbled ပြ problem နာကိုဖြေရှင်းရန်

gitbox 2025-05-11

ဘာသာစကားမျိုးစုံဝက်ဘ်ဆိုက်များကိုတီထွင်ခြင်းသို့မဟုတ်ပြင်ပဒေတာအရင်းအမြစ်များကိုပြုပြင်သည့်အခါဇာတ်ကောင် encoding ရှုပ်ထွေးမှုများသည်ခေါင်းကိုက်ခြင်းဖြစ်သည်။ အကယ်. encoding settings သည်မမှန်ကန်ပါကအနည်းဆုံး barbled code သည်အနည်းဆုံးဖြစ်လိမ့်မည်။
PHP တွင် Mbstring Extension သည် MB_Get_info () သည် encoding ပြ problems နာများအတွက်အလွန်အသုံးဝင်သောကိရိယာများအတွက်လုပ်ဆောင်မှုများစွာကိုပြုလုပ်နိုင်သည်။

mb_get_info ဆိုတာဘာလဲ ()

MB_GET_INFO () သည်လက်ရှိ Multibyte String Studing ၏ configuration information ကိုရရှိရန် PHP Mbstring extension တွင် function တစ်ခုဖြစ်သည်။
၎င်းသည်လက်ရှိ internal encoding, http inputprod encoding, output encoding, ဘာသာစကားချိန်ညှိချက်များစသဖြင့်ပြန်ပို့နိုင်သည်။

function ကိုလက်မှတ်သည်အလွန်ရိုးရှင်းပါသည်။

 array mb_get_info ([ string $type = "all" ] )

အကယ်. အဘယ်သူမျှမ parameter တွေကိုမကုန်လျှင် configuration information အားလုံးကိုပုံမှန်အားဖြင့်ပြန်ပို့လိမ့်မည်။ အကယ်. သင်သည် "internal_encoding" ကဲ့သို့သောအမျိုးအစားကိုဖြတ်သန်းပါကသက်ဆိုင်ရာသတင်းအချက်အလက်များကိုသာပြန်လည်ပေးလိမ့်မည်။

အဘယ်ကြောင့်ဇာတ်ကောင် encoding သည် carbled code ကိုဖြစ်ပေါ်စေသနည်း

PHP သည် Default Encoding မှအထူးသဖြင့် UTF-8, GBK နှင့် Shift-JIS ကဲ့သို့သော Byti-byte encodings များကိုကိုင်တွယ်သောအခါ "အထိခိုက်မခံသော encodings" သည်အထူးသဖြင့် UTF-8, GBK JIS,
ဘုံအကြောင်းပြချက်များမှာ -

  • Input encoding သည် script processing နှင့်ကိုက်ညီမှုမရှိပါ

  • output ၏ encoding settings သည်မမှန်ကန်ပါ

  • ဒေတာဘေ့စ်ဆက်သွယ်မှုကာလအတွင်း encoding အမှားများ

  • ဆာဗာမူလဒေသဆိုင်ရာနေရာများ

ဤအချိန်တွင် encoding ကိုလက်ရှိပတ်ဝန်းကျင်တွင်အသုံးပြုသည်ကိုသင်မသိပါကမှန်ကန်သောဆေးကိုသတ်မှတ်ရန်ခက်ခဲလိမ့်မည်။ နှင့် mb_get_info () ကျွန်တော်တို့ကိုရှာဖွေရန်ကူညီပေးနိုင်ပါသည်။

MB_Get_info နှင့်အတူ barbled code ကိုဖြေရှင်းနည်း?

ပြ problems နာများကိုရှာဖွေရန် MB_Get_info ကို မည်သို့အသုံးပြုရမည်ကိုပြသသည့်ရိုးရှင်းသောဥပမာတစ်ခုမှာဖော်ပြထားသည်။

 <?php
// လက်ရှိ Multibyte အပြောင်းအလဲနဲ့အတွက် configurations အားလုံးကိုကြည့်ပါ
$info = mb_get_info();
print_r($info);

// ပြည်တွင်းရေး coding အပေါ်အာရုံစူးစိုက်
echo "Internal Encoding: " . mb_internal_encoding() . PHP_EOL;

// encoding ကိုသတ်မှတ်ပါ UTF-8,concled code ကိုရှောင်ကြဉ်ပါ
mb_internal_encoding("UTF-8");

// နောက်တစ်ခါစစ်ဆေးပါ
echo "New Internal Encoding: " . mb_internal_encoding() . PHP_EOL;
?>

output ကိုဆင်တူသည် -

 Array
(
    [internal_encoding] => UTF-8
    [http_output] => UTF-8
    [http_input] => UTF-8
    [language] => neutral
    ...
)
Internal Encoding: UTF-8
New Internal Encoding: UTF-8

internal_encoding သည် UTF-8 မဟုတ်ကြောင်းသင်တွေ့ရှိပါက (ဥပမာ ISO-8859-1 ), ၎င်းသည် garbled code ၏အရင်းအမြစ်ဖြစ်သည်။
MB_Internal_encoding ("UTF-8") နှင့်တိုက်ရိုက်ပြန်လည်စတင်ခြင်းအားဖြင့်,

လက်တွေ့အမှုကို

သင့်တွင်ရိုးရှင်းသော interface တစ်ခုရှိသည်ဆိုပါစို့။

 <?php
header('Content-Type: text/html; charset=UTF-8');

// လက်ရှိပြည်တွင်းရေးကုဒ်ကိုစစ်ဆေးပါ
if (mb_internal_encoding() !== 'UTF-8') {
    mb_internal_encoding('UTF-8');
}

// အသုံးပြုသူ input ကိုယူဆ(ဖြစ်ကောင်းပုံစံကနေ、interface ကိုစသည်တို့)
$user_input = "မင်္ဂလာပါ,ကမ်ာဘ!";

// ထုတ်လုပ်ခြင်း
echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
?>

GB2312 ကဲ့သို့သောအခြား encodings များကိုအသုံးပြုသူသည်အခြား encodings များကိုလက်အောက်ခံလျှင်ပင်ဆာဗာသည်၎င်းတို့အား UTF-8 သို့တည့်တည့်လုပ်ခြင်းနှင့်၎င်းတို့အားထုတ်ယူခြင်းကိုအလွန်နည်းပါးသည်။
အကယ်. ပိုမိုပြည့်စုံသော Encoding ရှာဖွေတွေ့ရှိမှုလိုအပ်ပါက၎င်းကိုအလိုအလျောက်ခွဲခြားသတ်မှတ်ရန်၎င်းကို mb_detect_encoding () ဖြင့်လည်းအသုံးပြုနိုင်သည်။

အပိုဆောင်း: စာရွက်စာတမ်းလိပ်စာ

MB_GET_INFO () နှင့် MBString ၏အသုံးပြုမှုအကြောင်းပိုမိုသိလိုပါကတရားဝင်စာရွက်စာတမ်းများကိုသင်ရည်ညွှန်းနိုင်သည်။
https://gitbox.net/php/php/hmaual/zh/function.mbget-info.php