转换去除字符串的编码

cbo*_*tig 6 string text r utf-8

我有以下向量:

x <- list("Chamberlain", "\"Roma\\u00F1ach\"", "<node>")
Run Code Online (Sandbox Code Playgroud)

我想将它转换为带有UTF-8替换的unicode字符的向量,如下所示:

goal <- list("Chamberlain", "Romañach", "<node>")
Run Code Online (Sandbox Code Playgroud)

去掉的字符串导致问题.如果是第二个字符串:

wouldbenice <- "Roma\u00F1ach"
Run Code Online (Sandbox Code Playgroud)

然后enc2native(wouldbenice)会做正确的事情.(或lapply(x, enc2native)整个字符串.

我可以在UTF-8中正确显示第二个字符串:

# displays "Romañach"
eval(parse(text = x[[2]]))
Run Code Online (Sandbox Code Playgroud)

但是,这会很糟糕(抛出解析错误)x[1]x[2].如何可靠地将整个列表解析为适当的编码?

m0n*_*awk 5

使用stringi包.

stringi使用stri_replace_all_regex的更换和stri_unescape_unicode反转义Unicode的符号.

library(stringi)

x <- list("Chamberlain", "\"Roma\\u00F1ach\"", "<node>")

removed_quotes <- stri_replace_all_regex(x, "\"", "")

unescaped <- stri_unescape_unicode(removed_quotes)

# [1] "Chamberlain" "Romañach"    "<node>" 
Run Code Online (Sandbox Code Playgroud)