我正在使用XML
R包检索在线XML数据。我的问题是在调用xmlToList
期间UTF-8编码丢失了:例如,'é'被'é'替换。这在XML解析期间发生。
这是一段代码片段,其中包含编码丢失的示例以及保留编码的另一个示例(取决于数据源):
library(XML)
library(RCurl)
url = "http://www.bdm.insee.fr/series/sdmx/data/DEFAILLANCES-ENT-FR-ACT/M.AZ+BE.BRUT+CVS-CJO?lastNObservations=2"
res <- getURL(url)
xmlToList(res)
# encoding lost
url2 = "http://www.bdm.insee.fr/series/sdmx/conceptscheme/"
res2 <- getURL(url2)
xmlToList(res2)
# encoding kept
为什么编码行为有所不同?我尝试在.encoding = "UTF-8"
和getURL
设置enc2utf8(res)
,但这不会改变。
欢迎任何帮助!
谢谢,
的Jérémy
R version 3.2.1 (2015-06-18)
Platform: i386-w64-mingw32/i386 (32-bit)
Running under: Windows 7 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=French_France.1252 LC_CTYPE=French_France.1252
[3] LC_MONETARY=French_France.1252 LC_NUMERIC=C
[5] LC_TIME=French_France.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] RCurl_1.95-4.7 bitops_1.0-6 XML_3.98-1.3
loaded via a namespace (and not attached):
[1] tools_3.2.1
答案 0 :(得分:2)
您正在尝试阅读R中的SDMX文档。我建议使用rsdmx包,以便更轻松地阅读SDMX文档。该软件包在CRAN上可用,您也可以在Github上访问最新版本。
rsdmx允许您按file
或url
阅读SDMX文档,例如
require(rsdmx)
sdmx = readSDMX("http://www.bdm.insee.fr/series/sdmx/data/DEFAILLANCES-ENT-FR-ACT/M.AZ+BE.BRUT+CVS-CJO?lastNObservations=2")
as.data.frame(sdmx)
另一种方法是将Web服务接口用于嵌入式数据提供程序,INSEE就是其中之一。尝试:
sdmx <- readSDMX(providerId = "INSEE", resource = "data",
flowRef = "DEFAILLANCES-ENT-FR-ACT",
key = "M.AZ+BE.BRUT+CVS-CJO", key.mode = "SDMX",
start = 2010, end = 2015)
as.data.frame(sdmx)
AFAIK该软件包还包含字符编码问题,但我正在研究一种解决方案,以便尽快在软件包中提供。调用getURL(file, .encoding="UTF-8")
可以正确检索数据,但调用xml
函数会丢失编码。
注意:我也看到你使用参数lastNObservations
。目前,Web服务界面不支持额外的参数,但如果您需要,它可以很容易地使用。