Это странное поведение stringr
меня очень раздражает. stringr
без предупреждения изменяет кодировку некоторых строк, содержащих экзотические символы, в моем случае ø, å, æ, é и некоторые другие... Если вы str_trim
вектор символов, то те, что содержат экзотические буквы, будут преобразованы в новый Кодирование.
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'
Это проблема, потому что я использую data.table для (быстрого) слияния больших таблиц, и этот data.table не поддерживает смешанное кодирование, и потому что я не смог найти способ вернуться к единой кодировке.
Любой обходной путь?
РЕДАКТИРОВАТЬ: я думал, что смогу вернуться к базовым функциям, но они не защищают кодировку. paste
сохраняет его, но не sub
например.
Encoding(paste(' ', Letters)) # 'unknown'
Encoding(str_c(' ', Letters)) # mixed
Encoding(sub('^ +', '', paste(' ', Letters))) # mixed
letters
. Кстати,letters
— это константная строка в базе R. - person Frank   schedule 02.11.2015Encoding(Letters) = ''
, чтобы очистить кодировку. Но это не очень удовлетворительное решение. - person Konrad Rudolph   schedule 02.11.2015Encoding<-
не меняла фактическую кодировку. Но не могу найти ни одного примера прямо сейчас. - person Arthur   schedule 02.11.2015Encoding(c("a","ø")) # [1] "unknown" "latin1"
в отличие от неизвестного на вашей. Меня не раздражают ваши имена переменных :), просто сообщаю вам об этом. - person Frank   schedule 02.11.2015letters
, ноletters
не содержит никаких экзотических символов. - person Arthur   schedule 02.11.2015