我的特定数据包含一些html字符,例如
< for <
> for >
& for &
还有一些像\r\n\r\n
这样的转义字符,当我尝试使用tv.setText(str);
在文本视图中显示我的数据时,这只会解码转义符并显示html字符。
当我尝试使用类似Html.fromHtml(str)
之类的东西时,不解码转义字符。
那么,有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
Html.fromHtml(str).toString();
应该有效。我告诉你原因 -
您的字符串为Html
。 Unicode字符存储为编码字符实体。 &#x
;符号用于转义unicode字符,以便通过ISO-8859-1进行传输。 网络浏览器对其进行解码以显示实际的unicode字符。
解码HTML将HTML实体解码为Java原始unicode字符。
例如:
String html = "B & 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));