这是我最后一个问题here的跟进。我目前正在使用online database中的数据。我通过API访问数据,该API与以下代码一起使用:
#-------------------------------#
# packages #
#-------------------------------#
library(httr)
library(jsonlite)
#-------------------------------#
# API request #
#-------------------------------#
# build query
myquery <- '{
"filter": {"BAS.REFYEAR.v": 2015, "BAS.COUNTRY.v": "LV"},
"fieldIds": {},
"searchTerms": []
}'
url <- "https://www.eter-project.com/api/3.0/HEIs/query"
raw_result <- POST(url, body = myquery, content_type_json())
#-------------------------------#
# data processing #
#-------------------------------#
# translate Unicode into text
this.raw.content <- rawToChar(raw_result$content)
# transform json into workable format for R
mydata <- fromJSON(this.raw.content, flatten = TRUE)
现在查看数据集中的HEI名称时,我发现许多特殊字符未以正确的方式显示,可以通过执行mydata$BAS.INSTNAME[28:44]
受this post的启发,我使用stringi-package
来查看编码(stri_enc_mark(mydata$BAS.INSTNAME)
),这表明它是ASCII和UTF-8编码的混合体。当我从数据中下载.csv文件并将其导入到R(正确显示名称)时,这是完全相同的。因此,我认为错误一定在其他地方。我的猜测是,它发生在使用rawToChar
的unicode->文本转换中。
任何帮助将不胜感激!