Проблема readr::read_csv: китайский иероглиф становится грязным кодом

Я пытаюсь импортировать набор данных в RStudio, однако я застрял с китайскими иероглифами, так как они становятся грязными кодами. Вот код:

library(tidyverse)
df <- read_csv("中文,英文\n英文,德文")
df
# A tibble: 1 x 2
  `\xd6\xd0\xce\xc4`            `Ӣ\xce\xc4`
               <chr>                  <chr>
1 "<U+04E2>\xce\xc4" "<U+00B5>\xc2\xce\xc4"

Когда я использую базовую функцию read.csv, она работает хорошо. Я думаю, что я должен сделать что-то не так с кодировкой. Но в read_csv нет опции кодирования, как я могу это сделать?

1 ответ

Решение

Это потому, что символы помечены как UTF-8 тогда как фактическая кодировка является системной настройкой по умолчанию (вы можете получить stringi::stri_enc_get()).

Итак, вы можете сделать либо:

1) Считайте данные с правильной кодировкой:

df <- read_csv("中文,英文\n英文,德文", locale = locale(encoding = stringi::stri_enc_get()))

2) Считайте данные с неправильной кодировкой и пометьте их правильной кодировкой позже (обратите внимание, что это не всегда работает):

df <- read_csv("中文,英文\n英文,德文")
df <- dplyr::mutate_all(df, `Encoding<-`, value = "unknown")
Другие вопросы по тегам