3

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


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

所以表格的文本

"<abc at def.gh>"

被编码为

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

我的目标是兼容 CRAN 如何对维护者的电子邮件地址进行编码。所以<不应该是 a&lt;但应该是&#x3c;。同样.不应该&period;,但应该是&#x2e;

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

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

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

4

1 回答 1

3

这是快速的(未经彻底测试)。它的灵感来自另一个 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
于 2020-10-20T13:36:02.240 回答