【发布时间】:2020-05-13 10:27:51
【问题描述】:
打印到 RStudio 控制台时看起来完全正常的字符串,但在写入 csv 并使用 excel 打开时显示为奇怪的字符。
可重现的例子
以下生成显示为字符串"a wit" 的对象,然后将其写入csv:
# install.packages("dplyr")
library(dplyr)
serialized_char <- "580a000000030003060200030500000000055554462d380000001000000001000080090000000661c2a0776974"
(string <- serialized_char %>%
{substring(., seq(1, nchar(.), 2), seq(2, nchar(.), 2))} %>%
paste0("0x", .) %>%
as.integer %>%
as.raw %>%
unserialize())
[1] "a wit"
write.csv(string, "myfile.csv", row.names=F)
这是从 Mojave 编写时的样子(并在 OSX Mojave 的 excel 中查看) - 包含不需要的字符:
这是用 High Sierra 编写的(并在 High Sierra 中以 excel 格式查看) - 包含不受欢迎的字符:
何时从 Windows 10 编写并在 Windows 10 上的 excel 中查看(看起来不错!):
这是从 Mojave 编写的,但在 Windows 10 的 excel 中查看 - - 仍然包含不需要的字符:
问题
我有很多上述形式的字符数据(写入 csv 并在 excel 中打开时看起来很奇怪的字符) - 如何以文本在 excel 中“正常”显示的方式清理这些数据。
我尝试过的
到目前为止,我已经尝试了 4 件事
write.csv(string, "myfile.csv", fileEncoding = 'UTF-8')
Encoding(string) <- "latin-1"
Encoding(string) <- "UTF-8"
iconv(string, "UTF-8", "latin1", sub=NA)
【问题讨论】:
标签: r macos encoding stringr stringi