如何在Textview android中解码Html和转义字符

时间:2017-03-15 16:26:10

标签: android html textview

我的特定数据包含一些html字符,例如

   &lt; for < 
   &gt; for > 
   &amp; for &

还有一些像\r\n\r\n这样的转义字符,当我尝试使用tv.setText(str);在文本视图中显示我的数据时,这只会解码转义符并显示html字符。

当我尝试使用类似Html.fromHtml(str)之类的东西时,不解码转义字符。

那么,有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

Html.fromHtml(str).toString();应该有效。我告诉你原因 -

您的字符串为Html。 Unicode字符存储为编码字符实体。 &#x;符号用于转义unicode字符,以便通过ISO-8859-1进行传输。 网络浏览器对其进行解码以显示实际的unicode字符。

解码HTML将HTML实体解码为Java原始unicode字符。

例如:

String html = "B &#x0026; This is HTML";
String java = Html.fromHtml(html);
#=> Output: "B \u0026 This is HTML"
String strJava = Html.fromHtml(html).toString();
#=> Output: "B & This is HTML"

答案 1 :(得分:2)

您必须使用Html.fromHtml()方法。此方法从提供的HTML字符串返回可显示的样式文本。

低于API等级23(在牛轧糖之前):

textView.setText(Html.fromHtml("<h2>Html String</h2>"));

来自API Level 23(来自牛轧糖):

textView.setText(Html.fromHtml("<h2>Html String</h2>", Html.FROM_HTML_MODE_COMPACT));