Экспорт CSV с кодировкой ISO-8859-1 вместо UTF-8 - PullRequest
0 голосов
/ 21 декабря 2018

Я борюсь с кодировкой в ​​CSV-экспорте.Я из Нидерландов, и мы используем довольно много трем (например, ë, ï) и акценты (например, é, ó) и т. Д. Это вызывает проблемы при экспорте в CSV и открытии файла в Excel.

В MacOS Mojave.

Я пробовал несколько функций кодирования, как показано ниже.

library(stringr)
library(readr)

test <- c("Argentinië", "België", "Haïti")

test %>%
  stringi::stri_conv(., "UTF-8", "ISO-8859-1") %>%
  write.csv2("~/Downloads/test.csv")

Но, тем не менее, это вызывает странные символы:

enter image description here

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018

Как мне позаботиться о людях, импортирующих правильную кодировку в их Excel ..?

Не конвертировать в iso-8859-1, а экспортировать с readr::write_excel_csv2().Он записывает файл как UTF-8, но с меткой порядка байтов (BOM) , что понимает Excel).

library(readr)
test <- c("Argentinië", "België", "Haïti")

Мне нужно преобразовать test в UTF-8,потому что я на Windows.

test <- enc2utf8(test)

На MacOS test должен быть уже в UTF-8, так как это родная кодировка.

Encoding(test)
#> [1] "UTF-8" "UTF-8" "UTF-8"

Сохранить как Excel csv сreadr::write_excel_csv2()

write_excel_csv2(data.frame(x = test), "test.csv")

Альтернативно сохранить как xlsx с writexl::write_xlsx()

writexl::write_xlsx(data.frame(x = test), "test.xlsx")

test.csv in Excel

0 голосов
/ 01 августа 2019

сделать простую вещь

Просто откройте файл в блокноте и сохраните как UTF -8 под другим именем, теперь откройте сохраненный файл блокнота в Excel, и он попросит вас импортировать, сделать разделитель на основе вашегосообщить и использовать, а также в качестве разделителя для разделения столбцов и завершения импорта.вы получите чистый файл

0 голосов
/ 21 декабря 2018

test <- c("Argentinië", "België", "Haïti")

con <- file('~/test.csv', encoding = "ISO-8859-1")

write.csv(x = test, file = con)

Вызов csvlook test.csv -e "ISO-8859-1" в моем bash возвращает | a | x | | - | ---------- | | 1 | Argentinië | | 2 | België | | 3 | Haïti |

...