Прочитать текстовый файл UTF-8 с помощью спецификации

У меня есть текстовый файл с отметкой порядка байтов (U + FEFF) в начале. Я пытаюсь прочитать файл в R. Возможно ли избежать отметки порядка байтов?

Функция fread (из пакета data.table) читает файл, но добавляет  в начале первого имени переменной:

> names(frame_pers)[1]
[1] "reg_date"

То же самое с функцией read.csv.

В настоящее время я создал функцию, которая удаляет спецификацию с первого имени столбца, но я считаю, что должен быть способ автоматического разбиения спецификации.

remove.BOM <- function(x) setnames(x, 1, substring(names(x)[1], 4))

> names(frame_pers)[1]
[1] "reg_date"
> remove.BOM(frame_pers)
> names(frame_pers)[1]
[1] "reg_date"

Я использую собственную кодировку для сеанса R:

> options("encoding" = "")
> options("encoding")
$encoding
[1] ""

Ответы

Ответ 1

Вы пробовали read.csv(..., fileEncoding = "UTF-8-BOM")?. ?file говорит:

Как и в случае с R 3.0.0, кодировка "UTF-8-BOM" принимается и будет удаляться знак байтового заказа, если он присутствует (что часто бывает для файлов и веб-страниц созданный приложениями Microsoft).

Ответ 2

Это было выполнено между версиями 1.9.6 и 1.9.8 с this commit; обновите свою установку data.table, чтобы исправить это.

Как только вы закончите, вы можете просто использовать fread:

fread("file_name.csv")