使用 ISO-8859-1 编码而不是 UTF-8 导出 csv

Tde*_*eus 5 r character-encoding stringr

我在 csv 导出中的编码方面遇到了困难。我来自荷兰,我们使用相当多的 Trema(例如\xc3\xab, \xc3\xaf)和重音符号(例如\xc3\xa9, \xc3\xb3)等。这会在导出到 csv 并在 Excel 中打开文件时出现问题。

\n\n

在 macOS Mojave 上。

\n\n

我已经尝试了多种编码功能,如下所示。

\n\n
library(stringr)\nlibrary(readr)\n\ntest <- c("Argentini\xc3\xab", "Belgi\xc3\xab", "Ha\xc3\xafti")\n\ntest %>%\n  stringi::stri_conv(., "UTF-8", "ISO-8859-1") %>%\n  write.csv2("~/Downloads/test.csv")\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,这仍然会导致奇怪的字符:

\n\n

在此输入图像描述

\n

dpp*_*dan 5

\n\n

\n

我如何照顾人们在 Excel 中导入正确的编码..?

\n
\n\n

不要\xe2\x80\x99t 转换为 iso-8859-1 但以readr::write_excel_csv2(). 它将文件写入为 UTF-8,但带有Excel 可以理解的字节顺序标记 (BOM)

\n\n
library(readr)\ntest <- c("Argentini\xc3\xab", "Belgi\xc3\xab", "Ha\xc3\xafti")\n
Run Code Online (Sandbox Code Playgroud)\n\n

我需要转换test为 UTF-8,因为我在 Windows 上。

\n\n
test <- enc2utf8(test)\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 MacOS 上test应该已经是 UTF-8,因为这是本机编码。

\n\n
Encoding(test)\n#> [1] "UTF-8" "UTF-8" "UTF-8"\n
Run Code Online (Sandbox Code Playgroud)\n\n

另存为 Excel csv 格式readr::write_excel_csv2()

\n\n
write_excel_csv2(data.frame(x = test), "test.csv")\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者另存xlsxwritexl::write_xlsx()

\n\n
writexl::write_xlsx(data.frame(x = test), "test.xlsx")\n
Run Code Online (Sandbox Code Playgroud)\n\n

Excel 中的测试.csv

\n