העמוד נטען דרך הפרוקסי, אך אותיות עם סימני ניקוד חוזרות משובשות. לפני החלפת פרוקסי, מצאו את המקום הראשון שבו בייטי התגובה הופכים ל-Java String. InputStreamReader ללא charset מפורש עלול לקבל את ההחלטה הזו לפני ש-jsoup רואה את המסמך.

כאשר jsoup מטפל בשליפה, שמרו את התגובה כיחידה אחת עד לניתוח:

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

ה-API של התגובה חושף פרטי charset הנגזרים מ-Content-Type. הוא יכול גם לקבל החלפת charset מפורשת כאשר קבעתם שההצהרה של השרת שגויה. כתובת פרוקסי כשלעצמה אינה אומרת איזה קידוד תווים המסמך משתמש בו. אם דרוש לכם השוואה מורשית של עמוד ציבורי בלי חשבון פרוקסי, החליפו את מארח ה-HTTP והפורט בדוגמה במועמד מתוך רשימת פרוקסי ה-HTTP, תוך שמירה על אותן בדיקות קידוד.

אם לקוח HTTP אחר מספק InputStream, גרסת ניתוח הזרם של jsoup מקבלת שם charset ו-URI בסיס. charset null מאפשר את זיהויו והתנהגות הגיבוי המתועדים; יש להעביר במכוון charset HTTP ידוע ונכון. ה-URI הבסיס מספק הקשר לקישורים יחסיים.

לאחר שהבייטים פוענחו באופן שגוי, ניתוח ה-String שנוצר עם charset אחר אינו משחזר את הטקסט המקורי. חזרו לבייטים ולמטא-נתוני התגובה. השוו גם את מה שהתקבל: עמוד ההתחברות או הסירוב של הפרוקסי עשוי להיות מסמך שונה לחלוטין מהעמוד המבוקש, ולא כשל פענוח בו.

מאמרים קשורים