Преобразование акцентов в ASCII в R

Я пытаюсь преобразовать специальные символы в ASCII в R. Я попытался воспользоваться советом Хэдли в этот вопрос:

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

Но я получаю «Джос». Я использую stringi v1.1.1.

Я использую Mac. Мои друзья, работающие на компьютерах с Windows, похоже, получают желаемый результат «Хосе».

Есть идеи, что происходит?


person Huey    schedule 20.06.2016    source источник
comment
Сохраните результат в переменной. Назовем его s. Каков результат sapply(1:nchar(s), function(i){ return(charToRaw(substr(s, i, i))) }) на Mac? В Windows результатом является вектор raw со значениями 4a 6f 73 65.   -  person    schedule 20.06.2016
comment
Кроме того, входит ли "latin-ascii" в stringi::stri_trans_list()? Работает ли stringi::stri_trans_general('Jos\xe9', 'Latin-ASCII') так, как вы ожидаете?   -  person    schedule 20.06.2016
comment
При запуске упомянутого вами фрагмента sapply я получаю: Ошибка в nchar (s): недопустимая многобайтовая строка, элемент 1. Использование «Latin-ASCII» вместо «latin-ascii» также не помогает.   -  person Huey    schedule 20.06.2016


Ответы (1)


Кодировка по умолчанию в Windows отличается от типичной кодировки по умолчанию в других операционных системах (UTF-8). x ='Jos\xe9' означает что-то в Latin1, но не в UTF-8. Итак, в Linux или OS X вам нужно указать R, что такое кодировка:

x ='Jos\xe9'
Encoding(x) <- 'latin1'
stri_trans_general(x, 'Latin-ASCII')
person Ista    schedule 20.06.2016
comment
... и если бы приведенная выше строка не была закодирована в формате latin1, например, stri_conv() было бы полезно. - person gagolews; 07.07.2016