2024-04-25 18:27:04 发布
网友
我有各种各样的字符串,例如xc3\x93\xc5\x81,这些字符串是编码的UTF-8字符。我唯一可以访问的文件就是那些编码的值。我如何在R或python中将其解码为常规字符(而不是UTF-8俚语)?在
xc3\x93\xc5\x81
在R中,我们可以在https://stackoverflow.com/a/24958365/6197649处使用@Jeroen的函数,只需稍作修改就可以处理\xnn,而不是{}
\xnn
unescape_unicode <- function(x){ #single string only stopifnot(is.character(x) && length(x) == 1) #find matches m <- gregexpr("(\\\\)+x[0-9a-z]{2}", x, ignore.case = TRUE) if(m[[1]][1] > -1){ #parse matches p <- vapply(regmatches(x, m)[[1]], function(txt){ gsub("\\", "\\\\", parse(text=paste0('"', txt, '"'))[[1]], fixed = TRUE, useBytes = TRUE) }, character(1), USE.NAMES = FALSE) #substitute parsed into original regmatches(x, m) <- list(p) } x }
有趣的是,stringi::stri_escape_unicode给出了一个不同的结果,似乎把\xc3\x93误解为两个独立的字符(当它应该是一个,"\xc3\x93" == "\u00d3"时,但我很困惑是哪种约定决定了这一点,我希望能在评论中更清楚地了解这个主题的人的意见)
stringi::stri_escape_unicode
\xc3\x93
"\xc3\x93" == "\u00d3"
stringi::stri_unescape_unicode(x) #> [1] "Ã\u0093Å\u0081"
由reprex package(v0.2.1)于2019-04-15创建
在R中,我们可以在https://stackoverflow.com/a/24958365/6197649处使用@Jeroen的函数,只需稍作修改就可以处理}
^{pr2}$\xnn
,而不是{有趣的是,
stringi::stri_escape_unicode
给出了一个不同的结果,似乎把\xc3\x93
误解为两个独立的字符(当它应该是一个,"\xc3\x93" == "\u00d3"
时,但我很困惑是哪种约定决定了这一点,我希望能在评论中更清楚地了解这个主题的人的意见)由reprex package(v0.2.1)于2019-04-15创建
相关问题 更多 >
编程相关推荐