പേജ് പ്രോക്സിയിലൂടെ ലോഡ് ചെയ്യുന്നു, പക്ഷേ ഉച്ചാരണ ചിഹ്നങ്ങളുള്ള അക്ഷരങ്ങൾ വികലമായി തിരികെ വരുന്നു. പ്രോക്സി മാറ്റുന്നതിന് മുമ്പ്, പ്രതികരണത്തിന്റെ ബൈറ്റുകൾ 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 ഹോസ്റ്റും പോർട്ടും HTTP പ്രോക്സി പട്ടികയിൽ നിന്നുള്ള സ്ഥാനാർത്ഥിയാക്കി മാറ്റുക, അതേ എൻകോഡിംഗ് പരിശോധനകൾ നിലനിർത്തി.

മറ്റൊരു HTTP ക്ലയന്റ് InputStream നൽകിയാൽ, jsoup-ന്റെ സ്ട്രീം പാഴ്സ് ഓവർലോഡ് ഒരു charset പേരും അടിസ്ഥാന URI-യും സ്വീകരിക്കുന്നു. null charset അതിന്റെ രേഖപ്പെടുത്തിയ കണ്ടെത്തലും ഫോൾബാക്ക് സ്വഭാവവും അനുവദിക്കുന്നു; അറിയപ്പെടുന്നതും ശരിയായതുമായ HTTP charset ബോധപൂർവം കൈമാറണം. അടിസ്ഥാന URI ആപേക്ഷിക ലിങ്കുകൾക്ക് സന്ദർഭം നൽകുന്നു.

ബൈറ്റുകൾ തെറ്റായി ഡീകോഡ് ചെയ്തുകഴിഞ്ഞാൽ, ലഭിച്ച String മറ്റൊരു charset ഉപയോഗിച്ച് പാഴ്സ് ചെയ്യുന്നത് യഥാർത്ഥ പാഠം വീണ്ടെടുക്കുന്നില്ല. ബൈറ്റുകളിലേക്കും പ്രതികരണ മെറ്റാഡാറ്റയിലേക്കും മടങ്ങുക. ലഭിച്ചതും താരതമ്യം ചെയ്യുക: പ്രോക്സിയുടെ ലോഗിൻ പേജോ നിരസിക്കലോ അഭ്യർത്ഥിച്ച പേജിൽ നിന്ന് തീർത്തും വ്യത്യസ്തമായ രേഖയാകാം, അതിലെ ഡീകോഡിംഗ് പരാജയമല്ല.

അനുബന്ധ ലേഖനങ്ങൾ