PHP တွင် XML ဒေတာများကို XML ဒေတာများကိုထုတ်လုပ်ရန် XML_Parse function ကိုအသုံးပြုသည့်အခါဇာတ်ကောင်သတ်မှတ်ချက်ပြ problems နာများသည်အသုံးအများဆုံးထောင်ချောက်များထဲမှတစ်ခုဖြစ်သည်။ အထူးသဖြင့်ဒေတာများကိုစနစ်များနှင့်ဘာသာစကားများကိုဖြတ်ပြီးဖလှယ်သောနေရာတွင်ရှိသည့်အခြေအနေတွင် XML ဖိုင်များ၏ encoding method သည်အမှန်တကယ်အကြောင်းအရာများနှင့်ကိုက်ညီမှုမရှိပါ။ ဤဆောင်းပါးသည်အကြောင်းရင်းများကိုအသေးစိတ်ဖော်ပြရန်, ဥပမာအားဖြင့်ဇာတ်ကောင်များ၏ပြ problems နာများနှင့်သက်ဆိုင်ရာဖြေရှင်းနည်းများနှင့်ပြန်လည်ပြုပြင်ခြင်းနည်းလမ်းများနှင့်ပြန်လည်ပြုပြင်ခြင်းနည်းလမ်းများနှင့်ပြန်လည်ပြုပြင်ခြင်းနည်းလမ်းများ
XML ကြေငြာချက်တွင် encoding သည်အမှန်တကယ်အကြောင်းအရာနှင့်မကိုက်ညီပါ
<?xml version="1.0" encoding="UTF-8"?>
ဤကြေငြာချက်၏ဤလိုင်းသည် UTF-8 ကို အသုံးပြု. encoded ဟုဆိုလိုသည်။ အချို့ဖိုင်များသည် UTF-8 ဟုမှတ်သားထားသော်လည်းအမှန်တကယ်အကြောင်းအရာသည် GBK, ISO-8859-1 နှင့်အခြား encodings ဖြစ်သည်။
PHP default ဇာတ်ကောင်အစုံသည် XML နှင့်ကိုက်ညီမှုမရှိပါ
အကယ်. သင်၏ PHP script သည် UTF-8 တွင်ကြိုးကြိုးများပြုလုပ်နေပါက XML ဖိုင်ကိုအခြား encodings တွင်ရေးထားသည့် XML ဖိုင်ကိုအခြား encodings တွင်ရေးထားသည် ။
မှန်ကန်သော encoding ပြောင်းလဲခြင်းယုတ္တိဗေဒကိုမသတ်မှတ်ပါ
XML_Parse function သည်အလိုအလျောက်ဇာတ်ကောင်ပြောင်းလဲခြင်းကိုမပံ့ပိုးပါ။ အကယ်. 0 င်လာသော XML အကြောင်းအရာသည် UTF-8 မဟုတ်လျှင်ခွဲခြမ်းစိတ်ဖြာခြင်းသည်ပျက်ကွက်လိမ့်မည်။
XML ERRAM: ပုံစံမမှန် (မမှန်ကန်တဲ့လက်ခဏာသက်သေ)
XML အမှား - မမှန်ကန်သောဇာတ်ကောင်
ဤအမှားများသည်သင်ပေးသည့် XML ဇာတ်ကောင်စီးသည် UTF-8 format ဖြင့်မဟုတ်ဘဲမခွဲနိုင်သည့်တရားမ 0 င်စာလုံးများပါ 0 င်သည်။
ခွဲခြမ်းစိတ်ဖြာခြင်းမပြုမီ UTF-8 သို့ XML ကြိုးများကို transcoding သည်အများဆုံးနှင့်အလုံခြုံဆုံးနည်းလမ်းဖြစ်သည်။ PHP ကို MB_COCVERT_enCoding သို့မဟုတ် Iconv သုံး. အကောင်အထည်ဖော်နိုင်သည်။
$xml_content = file_get_contents("https://m66.net/data/sample.xml");
// မူရင်းကုဒ်ဖြစ်ပါတယ်ယူဆ GBK,ကွဲပြားခြားနားသော encodings အမှန်တကယ်အခြေအနေများအရသိရသည်ကြိုးစားနိုင်ပါတယ်
$xml_content_utf8 = mb_convert_encoding($xml_content, 'UTF-8', 'GBK');
$xml_parser = xml_parser_create('UTF-8');
xml_parse($xml_parser, $xml_content_utf8, true);
xml_parser_free($xml_parser);
မှတ်စု: encoding ကိုမူရင်း XML တွင်မည်သည့်စာဖြင့်ရေးသားထားကြောင်းသိရန်လိုအပ်သည်။ မှားယွင်းသော encoding မှားယွင်းနေသောပြ the နာကိုပိုမိုဆိုးရှားစေလိမ့်မည်။
အကယ်. မူရင်းအကြောင်းအရာသည် UTF-8 ဖြစ်သည်ကိုသင်သိပြီးသားဖြစ်သော်လည်းကြေငြာချက်မှားသည်, သင်သည်ပုံမှန်ပြုပြင်ခြင်းကိုသုံးနိုင်သည်။
$xml_content = file_get_contents("https://m66.net/data/sample.xml");
// ပြန်လည်နေရာချ XML ကြေညာချက်ထဲမှာ encoding အပိုင်း
$xml_content = preg_replace('/<\?xml(.*?)encoding=["\'][^"\']*["\'](.*?)\?>/i', '<?xml\1encoding="UTF-8"\2?>', $xml_content);
// ခွဲခြမ်းစိတ်ဖြာရန်ဆက်လက်
$xml_parser = xml_parser_create('UTF-8');
xml_parse($xml_parser, $xml_content, true);
xml_parser_free($xml_parser);
SAX Schema ခွဲခြမ်းစိတ်ဖြာခြင်းသည်အထူးသဖြင့်မလိုအပ်ပါက ( XML_Parse သည် ဤပုံစံနှင့်သက်ဆိုင်သည်) သင် encoding ကိုကိုင်တွယ်ရာတွင်ပိုမိုသည်းခံနိုင်သည့် Simplexml ကို အသုံးပြုရန်စဉ်းစားနိုင်သည်။
$xml_content = file_get_contents("https://m66.net/data/sample.xml");
// ကူးပြောင်း UTF-8
$xml_content_utf8 = mb_convert_encoding($xml_content, 'UTF-8', 'GB2312');
$xml = simplexml_load_string($xml_content_utf8);
print_r($xml);
UNFICT UTF-8 encoding processing data
သိုလှောင်မှုကာလအတွင်း coding ကိုက်ညီမှုသေချာပါစေ
ပြင်ပ XML ဖိုင်များအတွက်, စာမဖတ်မီသူတို့၏ encoding ကိုစစ်ဆေးပါ
အချိန်မီရှာဖွေခြင်းသည်အချိန်မှန်ရှာဖွေခြင်းကိုလွယ်ကူချောမွေ့စေရန်အတွက်အမှားမှတ်တမ်းများကိုဖွင့်ထားသည်
ဇာတ်ကောင်သတ်မှတ်ချက်ပြ problem နာသည်လှည့်စားပုံရသော်လည်းအမြစ်အကြောင်းရင်းကိုသင်နားလည်သရွေ့မည်သည့်နေရာတွင်မဖြေရှင်းနိုင်ပါ။ XML_Parse ကိုအသုံးပြုပြီးသောအခါအဝင်သည်တရားဝင် UTF-8 string ကိုသေချာစေရန်လိုအပ်ပါကလိုအပ်ပါက utom သည်တရားဝင် UTF-8 string ကိုသေချာစေရန်သေချာစေရန်ဖြစ်သည်။ ဤဆောင်းပါးသည် PHP နှင့် XML ပေါင်းစည်းမှုဆိုင်ရာပြ issues နာများကိုပိုမိုချောချောမွေ့မွေ့ကိုင်တွယ်ရန်သင့်အားကူညီရန်ကူညီပေးပါ။