write.csv()从 Mac OS 写出的结果与 Windows 10 不同?

问题描述 投票:2回答:1

字符串在列印到 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)

这是它的样子,当从 莫哈韦 (并在OSX Mojave的excel中查看)。含有不良字符:

enter image description here

这时,它写在 High Sierra (并在High Sierra的excel中查看)-------------------。含有不良字符:

enter image description here

当是当从写 Windows 10 并在windows 10上用excel查看(看起来不错!)。

enter image description here

这是当它被写入 莫哈韦但在Windows 10的excel中查看----。仍含有不良字符:

enter image description here

問題編號

我有很多上面这种形式的字符数据(这些字符在写入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
1个回答
2
投票

问题不在于R,问题在于Excel。

对于一个平台的字符编码应该是什么,Excel有自己的想法。值得注意的是,它坚持认为,即使在现代的macOS上,平台编码自然是Mac Roman。而不是实际流行的UTF-8。

该文件正确的说法是 书面 在 macOS 上默认为 UTF-8。

要让Excel以 阅读 你需要选择 "文件" ' "导入...",然后按照导入向导,让你指定文件编码。

© www.soinside.com 2019 - 2024. All rights reserved.