Это немного зависит от того, что вы хотите сделать с файлами, но обычно stri_read_lines()
из пакета stringi
отлично работает с умляутами, даже если кодировка оставлена на "auto"
library(stringi)
lines <- stri_read_lines("Erste Hilfe.txt", encoding = "auto")
Если вы отображаете вектор lines
, но у него все еще есть проблемы, вы можете попытаться определить кодировку:
lines_raw <- stri_read_raw("Erste Hilfe.txt")
stri_enc_detect(lines_raw)
Вывод будет выглядеть примерно так:
Encoding Language Confidence
1 UTF-8 1.00
2 windows-1252 de 0.55
3 Big5 zh 0.44
4 windows-1254 tr 0.25
5 windows-1250 hu 0.14
6 UTF-16BE 0.10
7 UTF-16LE 0.10
8 GB18030 zh 0.10
9 IBM424_rtl he 0.01
В этом случае я читал текстовый файл в UTF-8 со многими умлаутами, и у stringi не было проблем с правильным угадыванием кодировки. Но вы можете попробовать несколько кодировок, если достоверность не так высока.
Я также могу отобразить его без каких-либо проблем в консоли (несмотря на то, что для локали задано значение en_GB.UTF-8), но в некоторых случаях это может вызвать проблемы. Если вы хотите проверить, действительно ли ваша кодировка была уничтожена чтением в файле или консоль может не отображать ее, вы можете попробовать записать строки обратно в файл и проверить:
stri_write_lines(lines, "Erste Hilfe_new.txt")
Вы также можете попробовать создать вектор символов с помощью умляутов и посмотреть, правильно ли он отображается:
"äöü"
Обычно RStudio выше версии 0.93 не должно иметь проблем с этим. Надеюсь, это поможет.
Edit:
В комментариях выяснилось, что источник текста по-прежнему доступен в Интернете - я не рассматривал эту возможность. Часто возникают проблемы с кодировкой, потому что некоторые редакторы при сохранении файла вводят определенную кодировку. Если источник доступен онлайн, вы можете читать текст непосредственно в R, используя пакет rvest
:
library(rvest)
lines <- read_html("https://www.zeit.de/wissen/2018-10/erste-hilfe-kinder-rotes-kreuz-kurs-ersthelfer-notfall/komplettansicht") %>%
html_nodes(".article__item") %>%
html_text()
> grep("Maßnahmen", lines, value = TRUE)[1]
[1] "In vielen europäischen Ländern, etwa in Belgien und Dänemark, steht Erste Hilfe spätestens in der Sekundarstufe im Schullehrplan. Auch Großbritannien arbeitet an einem Gesetzesentwurf, der vorsieht, dass Grundschulkindern grundlegende Erste-Hilfe-Maßnahmen beigebracht werden. Die Schülerinnen und Schüler weiterführender Schulen sollen in Zukunft die Reanimation üben, also Beatmung und Herzdruckmassage.\n"
Пожалуйста, обратитесь к их документации, чтобы увидеть, как вы можете определить правильный ввод для html_nodes
. Я обычно использую расширение chrome selectorgadget.