write.csv()从Mac OS写入的结果与从Windows 10写入的结果不同?
打印到RStudio控制台时看起来完全正常,但写入csv并用excel打开时显示为奇怪字符的字符串 可复制示例 下面生成的对象显示为字符串write.csv()从Mac OS写入的结果与从Windows 10写入的结果不同?,r,macos,encoding,stringr,stringi,R,Macos,Encoding,Stringr,Stringi,打印到RStudio控制台时看起来完全正常,但写入csv并用excel打开时显示为奇怪字符的字符串 可复制示例 下面生成的对象显示为字符串“a wit”,然后将其写入csv: # install.packages("dplyr") library(dplyr) serialized_char <- "580a000000030003060200030500000000055554462d380000001000000001000080090000000661c2a0776974" (s
“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)
#安装程序包(“dplyr”)
图书馆(dplyr)
序列化字符%
粘贴0(“0x”,)%>%
as.integer%>%
as.raw%>%
取消序列化()
[1] “机智”
write.csv(字符串“myfile.csv”,row.names=F)
这是从莫哈韦(并在OSX莫哈韦中的excel中查看)编写时的外观-包含不需要的字符:
这是在High Sierra中编写的(并在excel High Sierra中查看)包含不需要的字符时出现的:
从Windows 10写入并在Windows 10上的excel中查看的时间(看起来不错!):
这是从莫哈韦编写的,但在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)
write.csv(字符串,“myfile.csv”,文件编码='UTF-8')
编码(字符串)问题不是R,而是Excel
Excel对平台的字符编码应该是什么有自己的想法。值得注意的是,它坚持认为,即使是在现代macOSs上,平台编码自然是MacRoman的。而不是实际流行的UTF-8
默认情况下,该文件在macOS上正确写入为UTF-8
要让Excel正确读取它,您需要选择“文件”›“导入…”,然后从导入向导中指定文件编码。您知道如何处理R中的字符串,以便Excel根据需要读取它吗?我已经尝试了我想要的一切know@stevec没有好办法。您可以添加一个UTF-8 BOM,但绝对每个人(包括Microsoft!)都同意这是一种糟糕的做法。技术上最好的方法可能是使用Excel automation来编写XLSX文件。我认为BOM非常老派?对。BOM是老派的,因为它是一个糟糕的解决方案。但是,Excel的这种行为也是不好的,可以说是一个bug。知识渊博。你知道有没有办法强迫上面看到的“智慧”
,使完全相同(来自上面的“智慧”)
是真的?