2014-02-07 2 views
14

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

Функция 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] "" 

ответ

22

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

Как из R 3.0.0 кодировку «„UTF-8-BOM“» принимается и удалит байте Order Mark, если присутствует (который часто является для файлов и веб-страниц порожденных Приложения Microsoft).

+0

Также не работает для меня. Мои исходные данные выглядят как «31.1», когда copy-paste из notepad ++, но в R с fread разбивается на 2 столбца, а с read.csv я получаю следующее как префикс «ï» ¿»(используя as.is = TRUE). Я использовал autohotkey и convert2txt, чтобы получить ocr с экрана gui, и я написал его в файл. Это дает мне проблему, что «31.2» становится «ï» ¿.331 « – EngrStudent

4

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

После этого, вы можете просто использовать fread:

fread("file_name.csv") 
+0

не работает для меня. Мои данные с префиксом "ï" ¿" – EngrStudent

+0

@EngrStudent каковы ваши данные.table version – MichaelChirico

+0

Я использую 1.10.4. Я закончил использование «read_csv» и установил «col_types =« c »», затем обрезал первый символ перед преобразованием в числовой. Это был клочок. – EngrStudent

Смежные вопросы