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

标签 r macos encoding stringr stringi

打印到 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 中查看)时的样子 - 包含不需要的字符:

enter image description here

这是在 High Sierra 中编写的(并在 High Sierra 的 excel 中查看)- 包含不需要的字符:

enter image description here

什么时候是从 Windows 10 编写并在 Windows 10 上的 excel 中查看(看起来不错!):

enter image description here

这是从 Mojave 编写的,但在 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,而是 Excel。

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

默认情况下,该文件在 macOS 上被正确写入为 UTF-8。

要让 Excel 正确读取它,您需要选择"file"›“导入...”,然后按照导入向导的操作指定文件编码。

关于r - write.csv() 从 Mac OS 写入的结果与从 Windows 10 写入的结果不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61772227/

相关文章:

r - 数据表中的条件差异计算

r - R:如何将两个箱形图彼此相邻放置,并保持两个相同的y范围?

r - 从 Shiny 的R中的散点图的多个选择生成多个表

objective-c - 没有名为 'NSTableViewDataSource' 的类型或协议(protocol)

math - 基于分形的图像压缩算法(和源代码)

css - 如何在 FluidRow 列中放置按钮

objective-c - cocos2d mac项目全屏模式下警报窗口位于主窗口下方

Xcode 3.2.4 和 Mac OS X 10.5

java - 在 Java 中将数组字符串转换为字符串并返回

encoding - 如何定义/声明土耳其语特殊字符(非 ascii)的 utf-8 代码点以将它们用作标准 utf-8 编码?