R Строковое кодирование от "неизвестно"/"ASCII" до "UTF-8"

Я не совсем уверен, как превратить это в воспроизводимый пример, и за это прошу прощения. Но у меня есть фрейм данных со строковым столбцом. Когда я бегу stri_enc_mark в столбце я вижу строки в кодировке ASCII и UTF-8. Это проблема, потому что, когда я пытаюсь загрузить эти данные в базу данных эластичного поиска, я сталкиваюсь со следующей ошибкой:

"Неверный начальный байт UTF-8 0xa0\n в [Source: org.elasticsearch.common.bytes.BytesReference$MarkSupportingStreamInputWrapper@40d00701; строка: 1, столбец: 1425]"

Я предполагаю, что это из-за кодированных строк ASCII. Я пытался использовать write.csv(... fileEncoding = 'UTF-8') но когда я загружаю этот CSV, в строковом столбце все еще есть смесь кодировок. ни Encoding(x) <- 'UTF-8', stri_enc_toutf8ни stri_encode кажется, помочь с преобразованием.

Любой совет или руководство было бы замечательно.

1 ответ

Решение

Благодаря @MrFlick я смог решить проблему. По сути, учитывая фрейм данных с символьными столбцами смешанных кодировок, проще всего было:

df %>%
  mutate_if(is.character, function(x){
    x %>%
      sapply(function(y){
        y %>%
          charToRaw %>%
          rawToChar
      })
   })

Это гарантирует, что все символы закодированы в одном и том же native кодирование. Это решает проблему, из-за которой мне не удалось загрузить данные в эластичный поиск из-за несоответствия кодировки.

Другие вопросы по тегам