在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音频开发:音频数据的编解码

如何让Android 支持HEIF 图片解码和加载(免费的方法)

AngularJs:如何在 HTML 中解码 HTML 实体? [复制]

如何在 C 中解码 HTML 实体?

在android中解码原始H264流?

在 Android 中解码 jpeg