ပထမ ဦး စွာကျွန်ုပ်တို့သည် Single-byte character sets နှင့် multi-byte character sets များအကြားကွဲပြားခြားနားမှုများကိုကျွန်ုပ်တို့နားလည်ရန်လိုအပ်သည်။ Single-byte character set သည် ASCII ကဲ့သို့သောဇာတ်ကောင်တစ် ဦး စီအတွက် byte နေရာတစ်ခုကိုအသုံးပြုသောဇာတ်ကောင်သတ်မှတ်ချက်ကိုရည်ညွှန်းသည်။ ဇာတ်ကောင်တစ်ခုစီသည်ကိန်းဂဏန်းများကို 0 မှ 255 အထိကိုယ်စားပြုနိုင်သည်။
ဆန့်ကျင်ဘက်အနေဖြင့်ဆန့်ကျင်ဘက်အနေဖြင့် Multi-byte character sets (UTF-8, GB2312, Shift-JIS စသည်) သည်ဇာတ်ကောင်ကိုကိုယ်စားပြုရန် bytes မျိုးစုံကိုသုံးပါ။ တရုတ်နှင့်ဂျပန်တို့ကဲ့သို့သောဘာသာစကားများအတွက်ဇာတ်ကောင်တစ် ဦး သည် 2, 3,
တစ် ဦး တည်း byte ဇာတ်ကောင်အစုံ၌ strutoupper () သည် အကျင့်စာရိတ္တ၏အရွယ်အစားသည်တသမတ်တည်းရှိပြီးအထူးလုပ်ဆောင်မှုများအတွက်မလိုအပ်ပါ။ သို့သော် Multibyte ဇာတ်ကောင်အစုံတွင်ဤလုပ်ဆောင်ချက်ရှိနိုင်ပါသည်။
Strtoupper () function သည်ပုံမှန်အားဖြင့် sether-byte အက်ခရာတစ်ခုပေါ်တွင်အခြေခံသည်။ Multibyte ဇာတ်ကောင် String တွင် strings တွင်ဇာတ်ကောင်များသည် bytes မျိုးစုံကိုစုပ်ယူနိုင်သည် ။
UTF-8 encoding ကိုဥပမာတစ်ခုအနေဖြင့်ယူထားသော UTF-8 ရှိအက္ခရာများသည် ASCII အက္ခရာများကဲ့သို့တ ဦး တည်းက bytes နှင့်မကိုက်ညီပါ။ Strtoupper () ကို သုံးရန်ကြိုးစားသည့်အခါ Multibyte ဇာတ်ကောင်များပါ 0 င်သည့် string တစ်ခုသို့ 0 င်ရောက်သောအခါ၎င်းသည် Multibyte ဇာတ်ကောင်၏အစိတ်အပိုင်းတစ်ခု၏အစိတ်အပိုင်းတစ်ခုဖြစ်ပြီးအမှားများသို့မဟုတ်မပြည့်စုံသောပြောင်းလဲမှုများကိုဖြစ်ပေါ်စေသည်။
ဥပမာအားဖြင့်:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"မင်္ဂလာပါ,world!"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strtoupper</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း: မင်္ဂလာပါ,WORLD!</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
အထက်ပါကုဒ်တွင် strtoupper () သည် "World" ကို "World" သို့မှန်ကန်စွာပြောင်းလဲနိုင်ပါသည်။ သို့သော်တရုတ်ဇာတ်ကောင် "ဟဲလို" သည် Multibyte ဇာတ်ကောင်အစုတစ်ခုဖြစ်ပြီး၎င်းသည်ဘာမှမပြောင်းလဲသေးပါ။
PHP သည်ဤပြ problem နာကိုဖြေရှင်းရန်နည်းလမ်းများစွာကိုထောက်ပံ့ပေးသည်။ အသုံးအများဆုံးနည်းလမ်းမှာ MB_strouper () function ကိုအသုံးပြုရန်ဖြစ်သည်။ ဤလုပ်ဆောင်ချက်သည် Multibyte ဇာတ်ကောင်အစုံများအတွက်ဒီဇိုင်းပြုလုပ်ထားသော Mbstring extension ၏အစိတ်အပိုင်းဖြစ်သည်။ တရုတ်အပါအ 0 င် Multibyte ဇာတ်ကောင်များကိုမှန်ကန်စွာကိုင်တွယ်နိုင်သည်။
mb_strtoupper () စာလုံးအကြီးစသည့်စာလုံးအကြီးများမှစာလုံးများကိုမှန်ကန်စွာပြောင်းလဲခြင်း။ ဤလုပ်ဆောင်မှု၏အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"မင်္ဂလာပါ,world!"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_strtoupper</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း: မင်္ဂလာပါ,WORLD!</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
ဤဥပမာတွင် MB_strtoupper () UTF-8 -8-encoded တရုတ်စာလုံးများကိုမှန်ကန်စွာကိုင်တွယ်။ "World" ကို "World" သို့ပြောင်းသည်။
MB_strtoupper () သည်ဇာတ်ကောင်ကိုအတိအလင်းဖော်ပြရန်လိုအပ်သည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် UTF-8 encoding ကိုအမြဲတမ်းသုံးရန်အကြံပြုသည်။ အကယ်. encoding မဖော်ပြထားပါက MB_stroupper () သည် မမျှော်လင့်သောအပြုအမူကိုဖြစ်ပေါ်စေနိုင်သောစနစ်၏မူလ encoding ပေါ်တွင်မူတည်သည်။
<span><span><span class="hljs-title function_ invoke__">mb_strtoupper</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
</span></span>
အကယ်. သင်သည် GB2312 ကဲ့သို့သောအခြား encodings များကိုအသုံးပြုနေပါက encoding parameters များကိုသင်ပြုပြင်နိုင်သည်။
<span><span><span class="hljs-title function_ invoke__">mb_strtoupper</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">'GB2312'</span></span><span>);
</span></span>