Чтение диакритических знаков в R - PullRequest
0 голосов
/ 27 мая 2020

Я импортировал несколько файлов .txt (тексты, написанные на испанском sh) в RStudio, используя следующий код:

content = readLines(paste("my_texts", "text1",sep = "/"))

Однако, когда я читаю тексты в RStudio, они содержат коды вместо диакритические знаки. Например, я вижу код <97> вместо «ó» или код <96> вместо «ñ».

Я также понял, что если файл .txt изначально был написан с использованием компьютера, настроенного на испанском языке sh, я не вижу кодов, но вижу настоящие диакритические знаки. И если тексты были написаны с использованием компьютера, настроенного на Engli sh, то я получаю коды (хотя при открытии файла .txt в TextEdit я вижу диакритические знаки).

Я не знаю, почему R отображает эти символы и что я могу сделать, чтобы сохранить диакритические знаки, которые я вижу в исходных файлах .txt.

Я читал, что могу решить эту проблему, изменив кодировку на UTF-8, поэтому я попробовал следующее:

content = readLines(paste("my_texts", "text1",sep = "/"), encoding = "UTF-8")

Но это не сработало. Есть идеи, что это за коды и как сохранить диакритические знаки?

1 Ответ

0 голосов
/ 27 мая 2020

Как вы разобрались, нужно выставить правильную кодировку. К сожалению, текстовый файл был написан с использованием устаревшей кодировки, а не UTF-8, а именно MacRoman . В идеале приложение, создающее файл, должно не использовать эту кодировку, и продукты Apple по умолчанию больше не создают его.

Но поскольку это то, что у вас есть, мы должны с этим иметь дело , и мы можем. Но, к сожалению, нам нужно go объезд, потому что аргумент encoding для readLines немного бесполезен. Вместо этого нам нужно вручную открыть соединение file:

con = file(file.path("my_texts", "text1"), encoding = "macintosh")
on.exit(close(con)) # Always make sure to close connections!
contents = readLines(con)

Обратите внимание, что имя кодировки «macintosh», строго говоря, не переносимо, поэтому это может работать не на всех платформах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...