2016-05-17 5 views
0

Ich versuche, eine Datei herunterzuladen und in R zu laden, aber es funktioniert nicht. Ich bin auf einem MAC, mit R 3.1.3Codierungsprobleme auf MAC

Die Datei ist im CSV-Format (und es gibt eine Option von JSON-Format).

Hier ist die URL für die Datei (CSV und JSON): http://dadosabertos.dataprev.gov.br/opendata/con02/formato=csv http://dadosabertos.dataprev.gov.br/opendata/con02/formato=json

ich ich weiß, die Datei herunterladen kann, öffnet in einem lokalen Texteditor, speichern als utf-8, und dann in R importieren Aber ich hätte gerne eine automatisierte Lösung, die keine andere Software benötigt. Und auch diese Lösung funktioniert nicht so einfach wie ich es erwartet hatte.

Folgendes habe ich bisher versucht: Da die Datei in Portugiesisch ist, weiß ich, dass es wahrscheinlich utf-8 ist.

library(jsonlite) 
options(encoding = "utf-8") 
url <- "http://dadosabertos.dataprev.gov.br/opendata/con02/formato=json" 
prev <- fromJSON(url) 

und die Fehlermeldung:

lexikalische Fehler: ungültige Bytes in UTF-8-String. : [{ "Knoten": { "Ano": "1988", "Espcie": "42-Ap Tempo Contribuio (hier) ------^

ich auch versucht url1 < - "http://dadosabertos.dataprev.gov.br/opendata/con02/formato=csv" zurück < - read.csv (url, sep = "")

Aber es hat auch nicht funktioniert ich habe auch versucht zu benutzen.

Sys.setlocale("LC_ALL", 'en_US.UTF-8') 

Aber es machte keinen Unterschied

Antwort

1

Zumindest die csv-Version scheint in ISO-8859-1 statt UTF-8 zu sein. Sie können den curl Befehl verwenden, um den Content-Type wie folgt zu überprüfen:

$ curl -I "http://dadosabertos.dataprev.gov.br/opendata/con02/formato=csv" 
HTTP/1.1 200 OK 
Set-Cookie: ACE_STICKY=R835601189; path=/; expires=Thu, 19-May-2016 00:43:56 GMT 
Server: nginx/1.2.4 
Date: Wed, 18 May 2016 00:27:45 GMT 
Content-Type: text/plain; charset=ISO-8859-1 
Connection: keep-alive 
X-Powered-By: PHP/5.3.3 
Content-Disposition: attachment; filename="CON02.csv"; 
Access-Control-Allow-Origin: * 

Und aus auf dem Inhalt suchen, das richtig zu sein scheint. Ich bin nicht vertraut mit den Kodierungsoptionen von r, aber versuche, Optionen zu setzen (Kodierung = "ISO-8859-1") und schau was passiert.

1

Ich löste es durch diese Art und Weise tun:

url<-"http://dadosabertos.dataprev.gov.br/opendata/act10/formato=json" 
a<-readLines(file(url, encoding="ISO-8859-1"), warn=FALSE) 
prev<-fromJSON(a)