将包含非ASCII字符的字符(向量)转换为html时,R中的首选方式是什么?我会像例如转换
"ü"
至
"ü"
我知道这可以通过巧妙地使用gsub(但是有人会一劳永逸地使用它),我认为包R2HTML将会这样做,但是它并没有。
编辑:这是我最后使用的显然可以通过修改字典来扩展:
char2html <- function(x){ dictionary <- data.frame( symbol = c("ä","ö","ü","Ä","Ö","Ü","ß"),html = c("ä","ö","ü","Ä","Ö","Ü","ß")) for(i in 1:dim(dictionary)[1]){ x <- gsub(dictionary$symbol[i],dictionary$html[i],x) } x } x <- c("Buschwindröschen","Weißdorn") char2html(x)
解决方法
XML使用一个insertEntities方法,但该方法是内部的。因此,您可能会自行承担风险,因为不会保证在将来的版本中保持运行。
现在,您的代码可以使用
char2html <- function(x) XML:::insertEntities(x,c("ä"="auml","ö"="ouml",…))
使用命名列表而不是data.frame感觉很优雅,但不会改变核心的东西。在引擎盖下,insertEntities以与代码相同的方式调用gsub。
如果数字HTML实体在您的环境中有效,那么您可能会将所有文本转换为使用utf8ToInt的文本,然后将安全的可打印ASCII字符转回未转义的形式。这将为您节省您的实体维护字典的麻烦。