Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
write.csv()从Mac OS写入的结果与从Windows 10写入的结果不同?_R_Macos_Encoding_Stringr_Stringi - Fatal编程技术网

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

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

打印到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)
#安装程序包(“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。知识渊博。你知道有没有办法强迫上面看到的
“智慧”
,使
完全相同(来自上面的“智慧”)
真的