在 R 中将字符编码为 HTML,CRAN 方式

Encode character to HTML in R, the CRAN way

在投票关闭重复之前,请确保它确实回答了我在这里的特定问题。问题可能看起来很相似,但我还没有找到适合我的答案。谢谢。


我正在寻找一种方法将任意标量字符转换为其 HTML 编码形式。我不想只编码 <" 等,而是整个文本。

所以表格的正文

"<abc at def.gh>"

编码为

"&#x3c;&#x61;&#x62;&#x63;&#x20;&#x61;&#x74;&#x20;&#x64;&#x65;&#x66;&#x2e;&#x67;&#x68;&#x3e;"

我的目标是兼容 CRAN 编码维护者电子邮件地址的方式。 所以 < 不应该是 &lt; 而应该是 &#x3c;。同样 . 不应该是 &period; 而应该是 &#x2e;.

要在 CRAN 上查看它,您可以访问任何包的 CRAN 页面,即 https://cran.r-project.org/package=curl,然后“查看源代码”并在那里找到 Maintainer 字段。

我正在寻找一个需要尽可能少的依赖项的轻量级解决方案,它不一定要快。

作为参考,在线解码编码字符串的工具:https://onlineasciitools.com/convert-html-entities-to-ascii

这是一些快速的东西(没有经过彻底测试)。它的灵感来自 another SO answer.

foo <- function(x) {
  splitted <- strsplit(x, "")[[1]]
  intvalues <- as.hexmode(utf8ToInt(enc2utf8(x)))
  paste(paste0("&#x", intvalues, ";"), collapse = "")
}

all.equal(
  foo("<abc at def.gh>"),
  "&#x3c;&#x61;&#x62;&#x63;&#x20;&#x61;&#x74;&#x20;&#x64;&#x65;&#x66;&#x2e;&#x67;&#x68;&#x3e;"
)
# [1] TRUE