ฉันกำลังดิ้นรนกับสตริงที่แสดง HTML ใน Android WebView
ที่ฝั่งเซิร์ฟเวอร์ฉันดาวน์โหลดหน้าเว็บและหลีกเลี่ยงอักขระ HTML และเครื่องหมายคำพูด (ฉันใช้ Python):
my_string = html.escape(my_string, True)
ในฝั่งไคลเอ็นต์ Android: สตริงจะไม่ใช้ Escape โดย:
myString = StringEscapeUtils.unescapeHtml4(myString)
webview.loadData( myString, "text/html", "encoding");
อย่างไรก็ตาม webview จะแสดงเป็นสตริงตามตัวอักษร นี่คือผลลัพธ์:
แก้ไข: ฉันเพิ่มสตริงดั้งเดิมที่ส่งคืนจากฝั่งเซิร์ฟเวอร์:
ลิงค์ rel = & quot; apple-touch-icon & quot; ขนาด = & quot; 114x114 & quot; href = & quot; /static/favicon/apple-touch-icon-114x114.png" & gt; & lt; ลิงค์ rel = & quot; apple-touch-icon & quot; ขนาด = & quot; 72x72 & quot; href = & quot; /static/favicon/apple-touch-icon-72x72.png" & gt; & lt; ลิงค์ rel = & quot; apple-touch-icon & quot; ขนาด = & quot; 144x144 & quot; href = & quot; /static/favicon/apple-touch-icon-144x144.png" & gt; & lt; ลิงค์ rel = & quot; apple-touch-icon & quot; ขนาด = & quot; 60x60 & quot; href = & quot; /static/favicon/apple-touch-icon-60x60.png" & gt; & lt; ลิงค์ rel = & quot; apple-touch-icon & quot; ขนาด = & quot; 120x120 & quot; href = & quot; /static/favicon/apple-touch-icon-120x120.png" & gt; & lt; ลิงค์ rel = & quot; ไอคอนแอปเปิ้ลสัมผัส & quot; ขนาด = & quot; 76x76 & quot; href = & quot; /static/favicon/apple-touch-icon-76x76.png" & gt; & lt; ลิงค์ rel = & quot; apple-touch-icon & quot; ขนาด = & quot; 152x152 & quot; href = & quot; /static/favicon/apple-touch-icon-152x152.png" & gt; & lt; ลิงค์ rel = & quot; apple-touch-icon & quot; ขนาด = & quot; 180x180 & quot; href = & quot; /static/favicon/apple-touch-icon-180x180.png" & gt; & lt; ลิงค์ rel = & quot; ไอคอน & quot; พิมพ์ = & quot; ภาพ / png & quot; href = & quot; /static/favicon/favicon-192x192.png" ขนาด = & quot; 192x192 & quot; & gt; & lt; ลิงค์ rel = & quot; ไอคอน & quot; พิมพ์ = & quot; ภาพ / png & quot; href = & quot; /static/favicon/favicon-160x160.png" ขนาด = & quot; 160x160 & quot; & gt; & lt; ลิงค์ rel = & quot; ไอคอน & quot; พิมพ์ = & quot; ภาพ / png & quot; href = & quot; /static/favicon/favicon-96x96.png" ขนาด = & quot; 96x96 & quot; & gt; & lt; ลิงค์ rel = & quot; ไอคอน & quot; พิมพ์ = & quot; รูปภาพ / png & quot; href = & quot; /static/favicon/favicon-16x16.png" ขนาด = & quot; 16x16 & quot; & gt; & lt; ลิงค์ rel = & quot; ไอคอน & quot; พิมพ์ = & quot; ภาพ / png & quot; href = & quot; /static/favicon/favicon-32x32.png" ขนาด = & quot; 32x32 & quot; & gt; & lt; meta name = & quot; msapplication-TileColor & quot; เนื้อหา = & quot; # da532c & quot; & gt; & lt; ชื่อเมตา = & quot; msapplication-TileImage & quot; เนื้อหา = & quot; /static/favicon/mstile-144x144.png" & gt; & lt; ชื่อเมตา = & quot; msapplication-config & quot; เนื้อหา = & quot; /static/favicon/browserconfig.xml" & gt; & lt;! - CSS ภายนอก - & gt; & lt; ลิงค์ rel = & quot; สไตล์ชีต & quot; href = & quot;https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css& quot; & gt; & lt;! - แบบอักษรภายนอก - & gt; & lt; ลิงค์ href = & quot; // maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel = & quot; สไตล์ชีต & quot; & gt; & lt; ลิงก์ href = & # x27; // fonts.googleapis.com/css?family=Open+Sans:300,600' rel = & # x27; สไตล์ชีต & # x27; พิมพ์ = & # x27; text / css & # x27; & gt; & lt; ลิงก์ href = & # x27; // fonts.googleapis.com/css?family=Lora:400,700' rel = & # x27; สไตล์ชีต & # x27; พิมพ์ = & # x27; text / css & # x27; & gt; & lt;! - [ถ้า lt IE 9] & gt; & lt; script src = & quot; // cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script> & lt; script src = & quot; // cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script> & lt;! [endif] - & gt; & lt;! - CSS ของไซต์ - & gt; & lt; ลิงค์ rel = & quot; สไตล์ชีต & quot; พิมพ์ = & quot; text / css & quot; href = & quot; /static/css/style.css" & gt; & lt; ลิงค์ rel = & quot; สไตล์ชีต & quot; พิมพ์ = & quot; text / css & quot; href = & quot; /static/css/glyphicon.css" & gt; & lt; / หัว & gt; & lt; ร่างกาย & gt; & lt; div class = & quot; คอนเทนเนอร์หน้าบทความ & quot; & gt; & lt; div class = & quot; แถว & quot; & gt; & lt; div class = & quot; col-md-8 col-md-offset-2 & quot; & gt; & lt; h2 & gt; & lt; a href = & quot; quot; href = & quot; /static/css/glyphicon.css" & gt; & lt; / หัว & gt; & lt; ร่างกาย & gt; & lt; div class = & quot; คอนเทนเนอร์หน้าบทความ & quot; & gt; & lt; div class = & quot; แถว & quot; & gt; & lt; div class = & quot; col-md-8 col-md-offset-2 & quot; & gt; & lt; h2 & gt; & lt; a href = & quot; quot; href = & quot; /static/css/glyphicon.css" & gt; & lt; / หัว & gt; & lt; ร่างกาย & gt; & lt; div class = & quot; คอนเทนเนอร์หน้าบทความ & quot; & gt; & lt; div class = & quot; แถว & quot; & gt; & lt; div class = & quot; col-md-8 col-md-offset-2 & quot; & gt; & lt; h2 & gt; & lt; a href = & quot;http://www.huffingtonpost.com/2015/03/22/ted-cruz-climate-change_n_6919002.html & quot; & gt; Gov. เจอร์รี่บราวน์กล่าวว่าเท็ดครูซเป็น & amp; # 39; ไม่เหมาะอย่างแน่นอน & amp; # 39; เพื่อเรียกใช้สำหรับ Office เนื่องจากมุมมองการเปลี่ยนแปลงสภาพภูมิอากาศ & lt; / a & gt; & lt; / h2 & gt; & lt; h4 & gt; แซมเลวีน & lt; / h4 & gt; & lt; div class = & quot; บทความ & quot; & gt; & lt; p & gt; California Gov. Jerry Brown (D) กล่าวเมื่อวันอาทิตย์ว่า Texas Sen. Ted Cruz (R-Texas) ไม่เหมาะอย่างยิ่งที่จะดำรงตำแหน่ง & quot; เนื่องจากจุดยืนของเขาเกี่ยวกับการเปลี่ยนแปลงสภาพภูมิอากาศ & lt; / p & gt; & lt; p & gt; & quot; ฉันเพิ่งกลับมาจากนิวแฮมป์เชียร์ซึ่งมีหิมะและน้ำแข็งอยู่ทุกหนทุกแห่ง มุมมองของฉันเกี่ยวกับเรื่องนี้เป็นเรื่องง่าย: การถกเถียงเรื่องนี้ควรเป็นไปตามวิทยาศาสตร์และควรทำตามข้อมูลและหลายคนที่ตื่นตระหนกเกี่ยวกับภาวะโลกร้อน พวกเขามีปัญหาเพราะวิทยาศาสตร์ไม่สำรองข้อมูล & quot; ครูซ & lt; a href = & quot;https://www.youtube.com/watch?v=m0UJ_Sc0Udk & quot; & gt; กล่าวว่า & lt; / a & gt; ใน & quot; ดึกกับ Seth Meyers & quot; สัปดาห์ที่แล้ว & lt; / p & gt; & lt; p & gt; เพื่อสำรองข้อมูลการอ้างสิทธิ์ของเขาครูซอ้างถึงข้อมูลดาวเทียมที่แสดงให้เห็นว่าไม่มีความร้อนอย่างมากในช่วง 17 ปีที่ผ่านมา แต่การให้เหตุผลของครูซ & lt; a href = & quot; http://www.politifact.com/truth-o-meter/statements/2015/mar/20 / ted-cruz / ted-cruzs-world-fire-not-last-17-years / & quot; & gt; ได้รับ หักล้างโดย Politifact & lt; / a & gt; ซึ่งแสดงให้เห็นว่านักวิทยาศาสตร์มีหลักฐานเพียงพอที่จะเชื่อว่าสภาพอากาศจะยังคงอุ่นขึ้น & lt; / p & gt; & lt; p & gt; & quot; สิ่งที่เขาพูดเป็นเท็จอย่างยิ่ง "บราวน์กล่าวใน & lt; a href = & quot; http: //www.nbcnews. ไม่เหมาะที่จะวิ่ง -n328046 & quot; & gt; NBC & # x27; s & quot; พบกับสื่อมวลชน & quot; & lt; / a & gt; เขาเสริมว่า & lt; a href = & quot; http://climate.nasa.gov/scientific-consensus/ & quot; & gt; มากกว่า 90 เปอร์เซ็นต์ & lt; / a & gt; ของนักวิทยาศาสตร์ที่ศึกษาสภาพภูมิอากาศยอมรับว่าการเปลี่ยนแปลงสภาพภูมิอากาศเกิดจากกิจกรรมของมนุษย์ & quot; ผู้ชายคนนั้นเชื่อในระดับของความไม่รู้และการปลอมแปลงข้อมูลทางวิทยาศาสตร์ที่มีอยู่โดยตรง เป็นเรื่องที่น่าตกใจและฉันคิดว่าผู้ชายคนนั้นแสดงว่าตัวเองไม่เหมาะที่จะเข้ารับตำแหน่งอย่างแน่นอน & quot; บราวน์กล่าว & lt; / p & gt; & lt; p & gt; Brown กล่าวเพิ่มเติมว่าการเปลี่ยนแปลงสภาพภูมิอากาศมี & lt; a href = & quot; http://www.huffingtonpost.com/2015/03/06/california-drought-feb February- record_n_6820704.html? utm_hp_ref = แคลิฟอร์เนีย - แล้ง & quot; & gt; ทำให้เกิดความแห้งแล้งในรัฐของเขา & lt; / a & gt; รวมทั้งความหนาวเย็นและพายุที่รุนแรงทางชายฝั่งตะวันออก & lt; / p & gt; & lt; p & gt; ในขณะที่ครูซอาจเห็นหิมะและน้ำแข็งทุกที่ในมลรัฐนิวแฮมป์เชียร์ข้อมูลแสดงให้เห็นว่าประเทศกำลังประสบปัญหา & lt; a href = & quot; http://www.huffingtonpost.com/2015/02/19/cold-weather- winter_n_6713104.html & quot; & gt; อุ่นกว่าค่าเฉลี่ย & lt; / a & gt; ฤดูหนาว & lt; / p & gt; & lt; p & gt; คำวิจารณ์ของบราวน์ที่มีต่อครูซเกิดขึ้นหนึ่งวันก่อนที่วุฒิสมาชิกรัฐเท็กซัสจะได้รับการแต่งตั้ง http://www.huffingtonpost.com/2015/03/22 /ted-cruz-2016_n_6917824.html"> แคมเปญประธานาธิบดี & lt; / a & gt; & lt; / p & gt; & lt; / div & gt; & lt; div class = & quot; เดิม & quot; & gt; & lt; a href = & quot;http://www.huffingtonpost.com/2015/03/22/ted-cruz-climate-change_n_6919002.html& quot; & gt; ดูต้นฉบับ & lt; / a & gt; & lt; / div & gt; & lt; / div & gt; & lt; / div & gt; & lt; / div & gt; & lt; script src = & quot; // code.jquery.com/jquery-latest.js"></script> & lt; script src = & quot; /static/js/modal.js" & gt; & lt; / script & gt; & lt; สคริปต์ src = & quot; /static/js/bootbox.min.js" & gt; & lt; / script & gt; & lt; script src = & quot; /static/js/site.js" & gt; & lt; / script & gt; & lt; สคริปต์ & gt; (ฟังก์ชัน (i, s, o, g, r, a, m) {i [& # x27; GoogleAnalyticsObject & # x27;] = r; i [r] = i [r] || ฟังก์ชัน () {(i [ r] .q = i [r] .q || []). push (อาร์กิวเมนต์)}, i [r] .l = 1 * new Date (); a = s.createElement (o), m = s. getElementsByTagName (o) [0]; a.async = 1; a.src = g; m.parentNode.insertBefore (a, m)}) (หน้าต่างเอกสาร & # x27; สคริปต์ & # x27;, & # x27; // www. google-analytics.com/analytics.js','ga'); ga (& # x27; สร้าง & # x27 ;, & # x27; UA-56257533-1 & # x27 ;, & # x27; อัตโนมัติ & # x27;); ga (& # x27; ส่ง & # x27 ;, & # x27; การดูหน้าเว็บ & # x27;); & lt; / สคริปต์ & gt; & lt; / ตัว & gt; & lt; / html & gt; "