如何重新编码以下字符?

时间:2019-04-01 18:20:41

标签: r utf-8 re-encoding

我以非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)
    }

0 个答案:

没有答案