我以非UTF8格式存储了CSV,并且转义了特殊字符,因此文件没有损坏,但仍然无法恢复原始编码。
stringi::stri_enc_detect(str = x)
建议编码为ISO-8859-1
。
我尝试了常规的功能
test_string = "Mar<ed>n: <U+0093> <U+0085> ni<f1>os"
Encoding(test_string ) <- "ISO-8859-1",
iconv(test_string, from="ISO-8859-1", to="UTF-8")
stringi::stri_unescape_unicode(test_string )
但是,没有一个起作用。 任何想法将不胜感激!
编辑:我自己回答问题以供将来参考:
与标记的重复项不是完全相同的问题,这里还有部分Unicode缺失的附加问题,例如是一个–但应该是 为了找到所有这些,我首先创建了一个列表:
selected_unicodes = text %>%
map(~stri_match_all_regex(str = .x, pattern = "<[cdef](.*?)>")[[1]][,1]) %>%
unlist(recursive = TRUE) %>%
unique()
,然后遍历文本以将它们一一替换:
for (unicode in selected_unicodes) {
replacement = gsub(">","", gsub("<","\\\\u00",unicode))
text = text %>% str_replace_all(unicode, replacement)
}