Export UTF-8 BOM .csv in R
Ich lese eine Datei durch RJDBC aus einer MySQL-Datenbank und es richtig zeigt alle Buchstaben, die in R (z.B., נווה שאנן).
Aber auch beim Export mit schreiben.csv und fileEncoding="UTF-8" die Ausgabe sieht so aus
<U+0436>.<U+043A>. <U+041B><U+043E><U+0437><U+0435><U+043D><U+0435><U+0446>
(in diesem Fall ist dies nicht die Zeichenfolge oben, sondern eine Bulgarische) für Bulgarisch, Hebräisch, Chinesisch und so weiter. Andere Sonderzeichen wie ã,ç usw. funktionieren gut.
Ich vermute, das ist wegen der UTF-8-BOM, aber ich habe nicht gefunden, eine Lösung auf dem Netz
Mein OS ist ein Deutsches Windows 7.
edit: ich habe versucht,
con<-file("file.csv",encoding="UTF-8")
write.csv(x,con,row.names=FALSE)
und der (afaik) entspricht write.csv(x, file="file.csv",fileEncoding="UTF-8",row.names=FALSE)
.
- Werden Sie sagen, dass, wenn Sie öffnen Sie die exportierte Datei, die Sie sehen, "U+0436" statt "ж"? Wenn dem so ist, dass keine BOM-Problem, nur eine Frage der Unicode-Codepunkte, nicht kodiert in UTF-Codierung, sondern die Ausgabe als code Punkte. Vielleicht zeigen Sie uns etwas code, wie genau man die Datei exportieren?
- Fügte ich Informationen, wie ich den Export der Datei. Und ja, ich sehe "<U+0436>" statt "ж"
- Sehen "<U+0436>" in der Datei mehrdeutig ist (es könnte sogar bedeuten, dass diese Zeichen tatsächlich inline in die Datei oder den editor einfach nicht angezeigt werden können Sie). Entweder Sie schreiben uns die "ж" in eine Datei und teilen Sie uns die hex-Werte der Zeichen die generierte Datei enthält (öffnen Sie Sie im hex-editor), ODER geben Sie uns den code, um Ihr problem reproduzieren (natürlich nicht wir haben deine DB so erstellen Sie einen Vektor mit den sample-Daten).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auf der Hilfe-Seite zu
Encoding
(help("Encoding")
) konnte man Lesen über spezielle encoding -bytes
.Mit diesem war ich in der Lage, zum generieren von csv-Datei von:
Kümmern sich darum, Unterschiede zwischen
factor
undcharacter
. Folgendes sollte funktionieren:Akzeptierte Antwort hat mir nicht geholfen in einer ähnlichen Anwendung (R-3.1 in Windows, während ich versuchte, die Datei in Excel öffnen). Trotzdem, die basierend auf diesem Teil von Datei Dokumentation:
Kam ich auf folgenden workaround:
Beachten Sie, dass df ist die Daten.Rahmen und mit dem Namen ist der Pfad zu der csv-Datei.
tryCatch()
konstruieren Sie konnte einfachon.exit(close(con))
.Es könnte auch nützlich sein, um passfileEncoding = "utf-8"
zuwrite.csv()
für die besten Ergebnisse.