Создание данных, отличных от ASCII, подходящих для CRAN

У меня есть некоторые данные, содержащие не-ASCII-символы, которые я хочу включить в файл rda в R-пакет. Когда я запускаю R CMD check на пакете, я получаю предупреждение:

Warning: found non-ASCII strings

который блокирует его в CRAN.

Есть аналогичный вопрос о удалении не-ASCII-символов из файлов данных, но я хочу сохранить не-ASCII-символы.

Вы можете получить данные CSV здесь. Я читаю его в R и сохраняю как rda с помощью этого кода:

english_monarchs <- read.csv(
  wherever_you_downloaded_the_file_to, 
  fileEncoding     = "utf8",
  na.strings       = ""
)
save(english_monarchs, "english_monarchs.csv")

Это столбец name набора данных, который содержит значения не-ascii.

head(levels(english_monarchs$name))
## [1] "Adda"                                "Æðelbehrt"                          
## [3] "Æðelberht I"                         "Æðelberht II and Eardwulf"          
## [5] "Æðelberht II, Ælfric and Eadberht I" "Æðelberht III"

Основываясь на (не очень ясном) руководстве в разделе "Вопросы кодирования" в разделе "Написание R-расширений", я думаю, что я должен кодировать фактор как UTF-8, но очевидный метод не работает:

Encoding(levels(english_monarchs$name)) <- "utf8"  #each encoding still "unknown"

Как сделать переносимые данные достаточными для приема на CRAN?

Ответы

Ответ 1

Вещь, которая работала для меня, заключалась в том, чтобы объявить кодировку как "latin1", а затем использовать iconv для преобразования в UTF-8.

Encoding(levels(english_monarchs$name)) <- "latin1"
levels(english_monarchs$name) <- iconv(
  levels(english_monarchs$name), 
  "latin1", 
  "UTF-8"
)