Es ist dieses seltsame Verhalten von stringr
, die mich wirklich nervt. stringr
ändert ohne Warnung die Codierung einiger Zeichenfolgen, die exotische Zeichen enthalten, in meinem Fall ø, å, æ, é und einige andere ... Wenn Sie str_trim
einen Vektor von Zeichen, dann werden diejenigen mit exotischen Buchstaben in ein neues umgewandelt Codierung.Warum verändert Stringr die Kodierung beim Manipulieren von Strings?
letter1 <- readline('Gimme an ASCII character!') # try q or a
letter2 <- readline('Gimme an non-ASCII character!') # try ø or é
Letters <- c(letter1, letter2)
Encoding(Letters) # 'unknown'
Encoding(str_trim(Letters)) # mixed 'unknown' and 'UTF-8'
Dies ist ein Problem, weil ich data.table für (fast) merge von großen Tabellen verwenden und dass data.table nicht gemischte Codierung unterstützt und weil ich nicht einen Weg, um wieder auf die einheitliche Codierung finden konnte, .
Alle Probleme?
EDIT: Ich dachte, ich könnte zurück zu den Basisfunktionen, aber sie schützen nicht entweder Codierung. paste
konserviert es, aber nicht sub
zum Beispiel.
Encoding(paste(' ', Letters)) # 'unknown'
Encoding(str_c(' ', Letters)) # mixed
Encoding(sub('^ +', '', paste(' ', Letters))) # mixed
Ich sehe es auch gemischt für 'Buchstaben'. By the way, 'Buchstaben' ist eine konstante Zeichenfolge in der Basis R. – Frank
'unbekannt' ist die lokale Codierung, wenn ich es richtig verstanden habe, so kann es auf die Maschinen abhängen, denke ich ... Ich habe Briefe für Briefe geändert, seit Sie schienen verärgert, ich überschreibe eine Konstante. – Arthur
Wenn Sie eine Möglichkeit haben, eine "unbekannte" Kodierung auf einer beliebigen Maschine zu erstellen, teilen Sie diese bitte mit! – Arthur