2016-06-20 25 views
1

Ich versuche, Sonderzeichen in R. zu ASCII konvertiert habe ich versucht Hadley Rat in this question mit:Konvertieren Akzente in R in ASCII

stringi::stri_trans_general('Jos\xe9', 'latin-ascii') 

Aber ich bekomme "Jos". Ich benutze Stringi v1.1.1.

Ich betreibe einen Mac. Meine Freunde, die Windows-Maschinen laufen, scheinen das gewünschte Ergebnis von "Jose" zu bekommen.

Irgendeine Idee was ist los?

+0

Speichern Sie das Ergebnis in einer Variablen. Nennen wir es 's'. Was ist das Ergebnis von 'sapply (1: nchar (s), Funktion (i) {return (charToRaw (substr (s, i, i)))}) auf Mac? Unter Windows ist das Ergebnis ein 'roher' Vektor mit den Werten' 4a 6f 73 65'. –

+0

Ist auch "latin-ascii" in 'stringi :: stri_trans_list()' enthalten? Funktioniert 'stringi :: stri_trans_general ('Jos \ xe9', 'Latein-ASCII') so, wie Sie es erwarten? –

+0

Beim Ausführen des Sapply-Snippets, das Sie erwähnten, bekomme ich: "Fehler in nchar (s): ungültige Multibyte-String, Element 1". Die Verwendung von 'Latein-ASCII' anstelle von 'Latein-ASCII' hilft ebenfalls nicht. – Huey

Antwort

5

Die Standardcodierung unter Windows unterscheidet sich von der Standardcodierung auf anderen Betriebssystemen (UTF-8). x ='Jos\xe9' bedeutet etwas in Latin1, aber nicht in UTF-8. Unter Linux oder OS X müssen Sie also R mitteilen, wie die Kodierung lautet:

x ='Jos\xe9' 
Encoding(x) <- 'latin1' 
stri_trans_general(x, 'Latin-ASCII') 
+0

... und wenn die obige Zeichenkette nicht latin1-codiert wäre, wäre z. B. 'stri_conv()' nützlich. – gagolews