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
кодирование. Это решает проблему, из-за которой мне не удалось загрузить данные в эластичный поиск из-за несоответствия кодировки.