在android中解码HTML实体
Posted
技术标签:
【中文标题】在android中解码HTML实体【英文标题】:Decode HTML entities in android 【发布时间】:2011-02-24 12:35:00 【问题描述】:我需要解码 html 实体,例如来自 ö至 ö 和 &到&。
URLEncoder.decode(str)
不做这项工作(从 % 符号转换)。 TextUtils 有 HTMLencode,但没有 HTMLdecode。
有没有解码HTML实体的函数?
【问题讨论】:
***.com/a/4882425/1224741 查看答案***.com/questions/6138127/… 【参考方案1】:您可以按照以下步骤使用 WebView 轻松表示任何 html 文本。
首先将您的数据转换为 html 格式:
String res=null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N)
res=Html.fromHtml(product.getDescription(),Html.FROM_HTML_MODE_COMPACT).toString();
else
res=Html.fromHtml(product.getDescription()).toString();
然后将你的数据加载到 WebView 中:
myWebView.loadDataWithBaseURL(null, res, "text/html", "utf-8", null);
【讨论】:
【参考方案2】:您可以通过调用从字符串中删除特殊字符
responsestring.replace(“special char here”, “”);
您可以像这样将响应从 htmlstring 转换为字符串 – Html.fromHtml(此处为响应字符串) 但是这种方法在 API 24 上已被贬低,因此您需要以正确的方式进行操作-
if (Build.VERSION.SDK_INT >= 24)
post_description.setText(Html.fromHtml( response here , Html.FROM_HTML_MODE_LEGACY));
else
post_description.setText(Html.fromHtml( response here ));
【讨论】:
【参考方案3】:Html.fromHtml(String html) 在 API v24 之后被弃用,所以这是正确的做法
if (Build.VERSION.SDK_INT >= 24)
textView.setText(Html.fromHtml(htmlString , Html.FROM_HTML_MODE_LEGACY)));
else
textView.setText(Html.fromHtml(htmlString));
【讨论】:
【参考方案4】:Html class 应该这样做,但是据说不支持所有内容。它总是对我有用,但我从来没有 ö 所以我不能告诉这个。
尝试Html.fromHtml(yourStr)
获取解码后的字符串。
【讨论】:
似乎在 API Level 16 中他们添加了Html.escapeHtml
虽然可以完美运行,但我的代码相当复杂。为什么没有一些简单的方法可以做到这一点?
@sFuller 功能明智fromHtml != escapeHtml
(来自android源代码的AFAICT)
escapeHtml
?但我想做相反的事情(解码/取消转义 HTML)!【参考方案5】:
您只需使用此代码即可完成此操作
Html.fromHtml(String).toString();
希望对你有帮助
【讨论】:
告诉我你的结果以上是关于在android中解码HTML实体的主要内容,如果未能解决你的问题,请参考以下文章
如何让Android 支持HEIF 图片解码和加载(免费的方法)