R 不显示来自 json 源的特殊字符

ahL*_*oco 4 windows json r utf-8 jsonlite

一些背景知识。\n我从提供公共交通数据的 API 中提取数据。它以 json 格式返回结果,我使用库“jsonlite”对其进行处理。

\n\n
 resp <- GET(url = url)\n\n\n  resp_char <- rawToChar(resp$content)\n  parsed <- fromJSON(resp_char, flatten = T)\n\n  parsed.df <- do.call(what = "rbind", args = lapply(parsed[1], as.data.frame))\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题是,结果中没有特殊字符。

\n\n

我正在 Windows Server 2012 计算机上工作,R 中的语言设置如下所示:

\n\n
    > Sys.getlocale()\n[1] "LC_COLLATE=German_Germany.1252;LC_CTYPE=German_Germany.1252;LC_MONETARY=German_Germany.1252;LC_NUMERIC=C;LC_TIME=German_Germany.1252"\n
Run Code Online (Sandbox Code Playgroud)\n\n

例子:

\n\n
    > df$direction\n"U Alt-Mariendorf (Berlin)" \n"U Alt-Tegel (Berlin)" \n"U Alt-Mariendorf (Berlin)"              \n"U Alt-Tegel (Berlin)" \n"M\xc3\x83\xc2\xa4rkisches Viertel, Wilhelmsruher Damm"\n
Run Code Online (Sandbox Code Playgroud)\n\n

第五个结果的预期结果是“M\xc3\xa4rkisches Viertel, Wilhelmsruher Damm”

\n\n

之后我查看了实际的编码。

\n\n
> Encoding(df$direction)\n   [1] "unknown" "unknown" "unknown" "unknown" "UTF-8"\n
Run Code Online (Sandbox Code Playgroud)\n\n

在我看来,到目前为止这看起来不错,但尽管如此我还是看不到特殊字符。

\n\n

我很欣赏有关该主题的任何建议和想法。

\n\n

问候

\n

ahL*_*oco 7

所以最后我明白了。感谢@parth,它让我找到了正确的答案。我在 fromJSON 语句之前使用了 Encoding,这对我有用。

  resp <- GET(url = url)

  resp_char <- rawToChar(resp$content)
  Encoding(resp_char) <- "UTF-8"
  parsed <- fromJSON(resp_char, flatten = T)

  parsed.df <- do.call(what = "rbind", args = lapply(parsed[1], as.data.frame))
Run Code Online (Sandbox Code Playgroud)