write.csv() 从 Mac OS 中写入的结果与从 Windows 中写入的结果不同 10?
write.csv() writes a different result from Mac OS than from Windows 10?
打印到 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 上的 excel 中查看时 10 - - 仍然包含不需要的字符:
问题
我有很多上述形式的字符数据(写入 csv 并在 excel 中打开时看起来很奇怪的字符)- 如何以文本出现的方式清理这些'normally' 在 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 到 正确读取,您需要选择“文件”›“导入...”,然后按照导入向导操作指定文件编码。
打印到 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 上的 excel 中查看时 10 - - 仍然包含不需要的字符:
问题
我有很多上述形式的字符数据(写入 csv 并在 excel 中打开时看起来很奇怪的字符)- 如何以文本出现的方式清理这些'normally' 在 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 到 正确读取,您需要选择“文件”›“导入...”,然后按照导入向导操作指定文件编码。