စာမျက်နှာသည် ပရောက်စီမှ တင်သော်လည်း အသံအမှတ်အသားပါ စာလုံးများ ပျက်ယွင်းလျက် ပြန်လာသည်။ ပရောက်စီမပြောင်းမီ တုံ့ပြန်ချက်၏ ဘိုက်များ Java String ဖြစ်သွားသည့် ပထမဆုံးနေရာကို ရှာပါ။ ရှင်းလင်းသော charset မပါသော InputStreamReader သည် jsoup မှ စာရွက်စာတမ်းကို မမြင်မီ ထိုဆုံးဖြတ်ချက်ကို ချနိုင်သည်။

jsoup က ဆွဲယူမှုကို ကိုင်တွယ်သောအခါ ခွဲခြမ်းစိတ်ဖြာမှုအထိ တုံ့ပြန်ချက်ကို တစ်စုတစ်စည်း ထားရှိပါ −

Connection.Response response = Jsoup
    .connect("https://www.example.com/catalog")
    .proxy("proxy.example", 8080)
    .execute();
Document page = response.parse();

တုံ့ပြန်ချက် API သည် Content-Type မှ ဆင်းသက်လာသော charset အချက်အလက်ကို ဖော်ပြသည်။ ဆာဗာ၏ ကြေညာချက် မှားယွင်းကြောင်း အတည်ပြုပြီးပါက ၎င်းသည် ရှင်းလင်းသော charset အစားထိုးမှုကိုလည်း လက်ခံနိုင်သည်။ ပရောက်စီလိပ်စာတစ်ခုတည်းက စာရွက်စာတမ်းသည် မည်သည့် စာလုံးကုဒ်ပြောင်းမှုကို သုံးသည်ကို မပြောနိုင်ပါ။ ပရောက်စီအကောင့်မပါဘဲ ခွင့်ပြုထားသော အများပြည်သူ စာမျက်နှာ နှိုင်းယှဉ်မှု လိုအပ်ပါက ဥပမာ၏ HTTP host နှင့် port ကို HTTP ပရောက်စီစာရင်း မှ ကိုယ်စားလှယ်တစ်ခုဖြင့် အစားထိုးပြီး ကုဒ်ပြောင်းစစ်ဆေးမှုများကို အတူတူ ထိန်းထားပါ။

အခြား HTTP ကလိုင်းတစ်ခုက InputStream ပေးပါက jsoup ၏ စီးကြောင်းခွဲခြမ်းစိတ်ဖြာမှု overload သည် charset အမည်နှင့် အခြေခံ URI ကို လက်ခံသည်။ null charset သည် ၎င်း၏ မှတ်တမ်းတင်ထားသော ရှာဖွေမှုနှင့် အရန်အပြုအမူကို ခွင့်ပြုသည်။ သိပြီးမှန်ကန်သော HTTP charset ကို တမင်တကာ လွှဲပြောင်းသင့်သည်။ အခြေခံ URI သည် နှိုင်းရလင့်များအတွက် အကြောင်းအရာကို ပေးသည်။

ဘိုက်များကို မှားယွင်းစွာ ကုဒ်ဖျက်ပြီးနောက် ရလဒ် String ကို အခြား charset ဖြင့် ခွဲခြမ်းစိတ်ဖြာခြင်းသည် မူရင်းစာသားကို ပြန်မရနိုင်ပါ။ ဘိုက်များနှင့် တုံ့ပြန်ချက် မက်တာဒေတာသို့ ပြန်သွားပါ။ ရရှိသည်ကိုလည်း နှိုင်းယှဉ်ပါ − ပရောက်စီ၏ လော့ဂ်အင် စာမျက်နှာ သို့မဟုတ် ငြင်းပယ်မှုသည် တောင်းဆိုထားသော စာမျက်နှာနှင့် လုံးဝကွဲပြားသော စာရွက်စာတမ်း ဖြစ်နိုင်သည်၊ ၎င်းအတွင်း ကုဒ်ဖျက်မှု မအောင်မြင်ခြင်း မဟုတ်ဘဲ။

ဆက်စပ်ဆောင်းပါးများ