Невозможно отобразить HTML-строку
Я борюсь с отображением строки HTML в Android WebView. На стороне сервера я скачал веб-страницу и экранировал символы и кавычки HTML (я использовал Python):
my_string = html.escape(my_string, True)
На стороне клиента Android: строки не экранируются:
myString = StringEscapeUtils.unescapeHtml4(myString)
webview.loadData( myString, "text/html", "encoding");
Однако веб-просмотр просто отображает их в виде буквенных строк. Вот результат: ![enter image description here]()
Изменение: я добавляю исходную строку, возвращаемую со стороны сервера:
"& lt;! DOCTYPE html & lt; html lang =" en "" & lt; head & gt; & lt; meta charset = " utf-8 " & lt; meta http-эквивалент = " X-UA-совместимый " content = "IE = edge" " & lt; meta name = "viewport" content = "width = device-width, initial-scale = 1.0" & gt; & lt; meta name = "quot; description" content = " " & lt; title & gt; Saulify & lt;/title & gt; & lt;! - All Favicons... - & lt; link rel= " значок ярлыка " href= "/static/favicon/favicon. ico "& lt; link rel=" apple-touch-icon "size =" 57x57 "href="/static/favicon/apple-touch-icon-57x57.png" & gt; & lt; link rel= "; apple-touch-icon> size = " 114x114 & ht; href=/static/favicon/apple-touch-icon-114x114.png" & lt; link rel= " apple-touch-icon " size = "; 72x72 "href="/static/favicon/apple-touch-icon-72x72.png" & lt; link rel= "apple-touch-icon" размеры = "144x144" href= "href=" Favicon/яблоко -Touch-значок-144x144.png " & GT; & lt; link rel= " apple-touch-icon " размеры = " 60x60 " href= "/static/favicon/apple-touch-icon-60x60.png" & GT; & lt; link rel= " apple-touch-icon " размеры = " 120x120 " href= "/static/favicon/apple-touch-icon-120x120.png" & GT; & lt; link rel= " apple-touch-icon " размеры = " 76x76 " href= "/static/favicon/apple-touch-icon-76x76.png" & GT; & lt; link rel= " apple-touch-icon " размеры = " 152x152 " href= "/static/favicon/apple-touch-icon-152x152.png" & GT; & lt; link rel= " apple-touch-icon " размеры = " 180x180 " href= "/static/favicon/apple-touch-icon-180x180.png" & GT; & lt; link rel= " icon " тип = " изображение /PNG " href= "/static/favicon/favicon-192x192.png" размеры = " 192x192 " & GT; & lt; link rel= " icon " тип = " изображение /PNG " href= "/static/favicon/favicon-160x160.png" размеры = " 160x160 " & GT; & lt; link rel= " icon " тип = " изображение /PNG " href= "/static/favicon/favicon-96x96.png" размеры = " 96x96 " & GT; & lt; link rel= " icon " тип = " изображение /PNG " href= "/static/favicon/favicon-16x16.png" размеры = " 16x16 " & GT; & lt; link rel= " icon " тип = " изображение /PNG " href= "/static/favicon/favicon-32x32.png" размеры = " 32х32 " & GT; & lt; meta name = "msapplication-TileColor" content= " # da532c " & GT; & lt; meta name = " msapplication-TileImage " content= "/static/favicon/mstile-144x144.png" & GT; & lt; meta name = " msapplication-config " content= "/static/favicon/browserconfig.xml" & GT; & lt;! - Внешний CSS - & gt; & lt; link rel= " таблица стилей " href= " https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> & lt;! - Внешние шрифты - & gt; & lt; link href= "//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" отн = " таблица стилей " & GT; & lt; link href= & # x27;//fonts.googleapis.com/css?family=Open+Sans:300,600' отн = & # x27; таблица стилей & # x27; тип = & # x27; текст /CSS & # x27; & GT; & lt; link href= & # x27;//fonts.googleapis.com/css?family=Lora:400,700' отн = & # x27; таблица стилей & # x27; тип = & # x27; текст /CSS & # x27; & GT; & lt;! - [if lt IE 9] & gt; & lt; script src= "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script> & lt; script src= "//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script> & Lt; [ENDIF] - & GT!; & lt;! - CSS сайта - & gt; & lt; link rel= " таблица стилей " тип = " текст /CSS " href= "/static/css/style.css" & GT; & lt; link rel= " таблица стилей " тип = " текст /CSS " href= "/static/css/glyphicon.css" & GT; & Lt;/головка & GT; & Л; тело & GT; & lt; div class= "контейнер article-page" & gt; & lt; div class= "row" & gt; & lt; div class= "col-md-8 col-md-offset-2" & gt; & lt; h2 & lt; a href= " http://www.huffingtonpost.com/2015/03/22/ted-cruz-climate-change_n_6919002.html">Gov. Джерри Браун говорит, что Тед Круз & # 39; Абсолютно негодный & # 39; Работать в офисе из-за представлений об изменении климата & lt;/a & gt; & lt;/h2 & gt; & lt; h4 & gt; Сэм Левин & lt;/h4 & gt; & lt; div class= "article" & gt; В воскресенье губернатор штата Калифорния Джерри Браун (О) заявил, что сенатор от штата Техас Тед Круз (штат Техас) абсолютно не подходит для участия в выборах. из-за его позиции в отношении изменения климата. & lt;/p & gt; & lt; p & gt; "Я только что вернулся из Нью-Гемпшира, где везде снег и лед. Мой взгляд на это прост: споры об этом должны следовать науке и должны следовать данным, и у многих паникеров по поводу глобального потепления у них есть проблема, потому что наука не поддерживает их, " Круз & lt; a href= " https://www.youtube.com/watch?v=m0UJ_Sc0Udk">said</a> в "Поздней ночи с Сетом Мейерсом" на прошлой неделе. & lt;/p & gt; & lt; p & gt; В подтверждение своего утверждения Круз привел спутниковые данные, которые показали отсутствие значительного потепления за последние 17 лет. Но рассуждения Круза & lt; href= " http://www.politifact.com/truth-o-meter/statements/2015/mar/20/ted-cruz/ted-cruzs-worlds-fire-not-last-17-years//quot; & gt; разоблачен Politifact & lt;/a & gt;, который показал, что у ученых есть достаточно доказательств, чтобы полагать, что климат продолжит нагреваться. & lt;/p & gt; & lt; p & gt; "То, что он сказал, является абсолютно ложным", - сказал Браун на & lt; a href= " http://www.nbcnews.com/meet-the-press/california-governor-ted-cruz- unfit- be-running-n328046 "NBC" s "Meet the Press". Он добавил, что & lt; a href= " http://climate.nasa.gov/scientific-consensus/"Более 90 процентов ученых, изучающих климат, согласны с тем, что изменение климата вызвано деятельностью человека". Этот человек свидетельствует о таком уровне невежества и прямой фальсификации существующих научных данных. Это & # x27; Это шокирует, и я думаю, что человек совершенно себя не устраивает, чтобы баллотироваться на должность ", - сказал Браун. </p>> Браун добавил, что изменение климата имеет & lt; a href= " http://www.huffingtonpost.com/2015/03/06/california-drought-feb February- record_n_6820704.html? utm_hp_ref = california-drought " & gt; вызвал засухи в его штате, а также сильные холода и штормы на востоке Побережье. Пока Круз может иметь В Нью-Гемпшире повсюду видны снег и лёд, данные показывают, что в стране на самом деле наблюдается & lt; href= " http://www.huffingtonpost.com/2015/02/19/cold-weather- winter_n_6713104.html & gt; теплее среднего & lt;/a & gt;. Зимой & л;/р & GT; & lt; p & gt; Браунс критикует Круза за день до того, как сенатор от Техаса собирается объявить & lt; a href= " http://www.huffingtonpost.com/2015/03/22/ted-cruz-2016_n_6917824.html">presidential кампания & lt;/a & gt;. & Lt;/р & GT; & Lt;/дел & GT; & lt; div class= "original" & gt; & lt; a href= " http://www.huffingtonpost.com/2015/03/22/ted-cruz-climate-change_n_6919002.html">VIEW ORIGINAL & lt;/a & gt; & Lt;/дел & GT; & Lt;/дел & GT; & Lt;/дел & GT; & Lt;/дел & GT; & lt; script src= "//code.jquery.com/jquery-latest.js"></script> & lt; script src=//static/js/modal.js" & gt;/script & gt; & lt; script src=//static/js/bootbox.min.js" & lt;/script & gt; & lt; script src=//static/js/site.js" & lt;/script & gt; & Lt; & сценарий GT; (function (i, s, o, g, r, a, m) {i [& # x27; GoogleAnalyticsObject & # x27;] = r; я [r] = я [r] || function() {(i [ r].q = я [r].q || []). push (аргументы)}, я [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; auto & # x27;); ga (& # x27; отправить & # x27 ;, & # x27; просмотр страницы & # x27;); & Lt;/сценарий & GT; & Lt;/тело & GT; & Lt;/HTML & GT;"
Ответы
Ответ 1
Я изменил код здесь:
public class test extends Activity {
private WebView wv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
wv = (WebView) findViewById(R.id.wv);
String s = "<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content=""> <title>Saulify</title> <!-- All the Favicons... --> <link rel="shortcut icon" href="/static/favicon/favicon.ico"> <link rel="apple-touch-icon" sizes="57x57" href="/static/favicon/apple-touch-icon-57x57.png"> <link rel="apple-touch-icon" sizes="114x114" href="/static/favicon/apple-touch-icon-114x114.png"> <link rel="apple-touch-icon" sizes="72x72" href="/static/favicon/apple-touch-icon-72x72.png"> <link rel="apple-touch-icon" sizes="144x144" href="/static/favicon/apple-touch-icon-144x144.png"> <link rel="apple-touch-icon" sizes="60x60" href="/static/favicon/apple-touch-icon-60x60.png"> <link rel="apple-touch-icon" sizes="120x120" href="/static/favicon/apple-touch-icon-120x120.png"> <link rel="apple-touch-icon" sizes="76x76" href="/static/favicon/apple-touch-icon-76x76.png"> <link rel="apple-touch-icon" sizes="152x152" href="/static/favicon/apple-touch-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="/static/favicon/apple-touch-icon-180x180.png"> <link rel="icon" type="image/png" href="/static/favicon/favicon-192x192.png" sizes="192x192"> <link rel="icon" type="image/png" href="/static/favicon/favicon-160x160.png" sizes="160x160"> <link rel="icon" type="image/png" href="/static/favicon/favicon-96x96.png" sizes="96x96"> <link rel="icon" type="image/png" href="/static/favicon/favicon-16x16.png" sizes="16x16"> <link rel="icon" type="image/png" href="/static/favicon/favicon-32x32.png" sizes="32x32"> <meta name="msapplication-TileColor" content="#da532c"> <meta name="msapplication-TileImage" content="/static/favicon/mstile-144x144.png"> <meta name="msapplication-config" content="/static/favicon/browserconfig.xml"> <!-- External CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> <!-- External Fonts --> <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"> <link href='//fonts.googleapis.com/css?family=Open+Sans:300,600' rel='stylesheet' type='text/css'> <link href='//fonts.googleapis.com/css?family=Lora:400,700' rel='stylesheet' type='text/css'> <!--[if lt IE 9]> <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]--> <!-- Site CSS --> <link rel="stylesheet" type="text/css" href="/static/css/style.css"> <link rel="stylesheet" type="text/css" href="/static/css/glyphicon.css"> </head> <body> <div class="container article-page"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <h2><a href="http://www.huffingtonpost.com/2015/03/22/ted-cruz-climate-change_n_6919002.html">Gov. Jerry Brown Says Ted Cruz Is &#39;Absolutely Unfit&#39; To Run For Office Because Of Climate Change Views</a></h2> <h4>Sam Levine</h4> <div class="article"> <p>California Gov. Jerry Brown (D) said on Sunday that Texas Sen. Ted Cruz (R-Texas) is "absolutely unfit to be running for office" because of his position on climate change.</p> <p>"I just came back from New Hampshire, where there's snow and ice everywhere. My view on this is simple: Debates on this should follow science and should follow data, and many of the alarmists on global warming, they have a problem because the science doesn't back them up," Cruz <a href="https://www.youtube.com/watch?v=m0UJ_Sc0Udk">said</a> on "Late Night with Seth Meyers" last week.</p> <p>To back up his claim, Cruz cited satellite data that has shown a lack of significant warming over the last 17 years. But Cruz's reasoning <a href="http://www.politifact.com/truth-o-meter/statements/2015/mar/20 /ted-cruz/ted-cruzs-worlds-fire-not-last-17-years/">has been debunked by Politifact</a>, which has shown that scientists have ample evidence to believe that the climate will continue to warm.</p> <p>"What he said is absolutely false," Brown said on <a href="http://www.nbcnews.com/meet-the-press/california-governor-ted-cruz- unfit-be-running-n328046">NBC's "Meet the Press."</a> He added that <a href="http://climate.nasa.gov/scientific-consensus/">over 90 percent</a> of scientists who study the climate agree that climate change is caused by human activity. "That man betokens such a level of ignorance and a direct falsification of existing scientific data. It's shocking, and I think that man has rendered himself absolutely unfit to be running for office," Brown said.</p> <p>Brown added that climate change has <a href="http://www.huffingtonpost.com/2015/03/06/california-drought-february- record_n_6820704.html?utm_hp_ref=california-drought">caused droughts in his state</a>, as well as severe cold and storms on the east coast.</p> <p>While Cruz may have seen snow and ice everywhere in New Hampshire, data shows that the country is actually experiencing a <a href="http://www.huffingtonpost.com/2015/02/19/cold-weather- winter_n_6713104.html">warmer than average</a> winter.</p> <p>Browns criticism of Cruz comes one day before the Texas senator is set to announce a <a href="http://www.huffingtonpost.com/2015/03/22 /ted-cruz-2016_n_6917824.html">presidential campaign</a>. </p> </div> <div class="original"> <a href="http://www.huffingtonpost.com/2015/03/22/ted-cruz-climate-change_n_6919002.html">VIEW ORIGINAL</a> </div> </div> </div> </div> <script src="//code.jquery.com/jquery-latest.js"></script> <script src="/static/js/modal.js"></script> <script src="/static/js/bootbox.min.js"></script> <script src="/static/js/site.js"></script> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},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) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-56257533-1', 'auto'); ga('send', 'pageview'); </script> </body> </html>";
wv.loadData(stripHtml(s), "text/html", "UTF-8");
}
public String stripHtml(String html) {
return Html.fromHtml(html).toString();
}
}
![enter image description here]()
Ответ 2
Попробуйте этот код,
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N){
yourtextview.setText(Html.fromHtml(yourstring,Html.FROM_HTML_MODE_LEGACY));
}
else {
yourtextview.setText(Html.fromHtml(yourstring));
}
Ответ 3
Попробуйте следующее:
wv = (WebView) findViewById(R.id.wv);
String s = "You HTML string";
wv.loadData(stripHtml(s), "text/html", "UTF-8");
public String stripHtml(String html) {
return Html.fromHtml(html).toString();
}