r - символьный вектор с меткой порядка байтов (UTF-8-BOM) отличается в разных операционных системах - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть скрипт, который принимает файл или соединение, которые иногда могут иметь метку порядка байтов UTF-8 (BOM) . Я написал эту строку для удаления нежелательных символов:

text_wo_BOM <- sub(rawToChar(as.raw(c(0x5e, 0xef, 0xbb, 0xbf))), "", text_with_BOM)

Однако при этом я заметил, что моя среда GNU-Linux не печатала символы, а моя среда Windows - печатала. Оба работают под управлением R 3.4.x.

Linux

rawToChar(as.raw(c(0xef, 0xbb, 0xbf)))
## [1] ""

Windows

rawToChar(as.raw(c(0xef, 0xbb, 0xbf)))
## [1] ""

Поведение сопоставления с образцом выглядит одинаково в GNU-Linux и Windows, например, , grep, sub regexpr. Однако для некоторых операций Linux не считает спецификацию символами, а Windows. В результате такие функции, как substr или substring, будут вести себя по-разному в зависимости от операционной системы.

Мой вопрос

Есть ли способ заставить мой компьютер с Linux имитировать поведение Windows или наоборот?

Спасибо!

...