Проблема 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")