也许这是一个愚蠢的问题,但我真的很困惑。我们在Linux系统上运行Shiny服务器并设置语言= UTF-8以确保它正确显示特殊字符(例如谭盾,いきも,AcatlándePérezFigueroa)。但是,当我尝试下载数据时(我有一个使用write.csv
功能的下载按钮),这些特殊字符变得混乱。
当我指定编码时,它适用于Windows和Mac系统,这意味着Windows和Mac用户都可以从Shiny页面下载正确的数据。
它首先允许用户上传数据,然后最终进行操作和下载。以下是简化示例:
#upload data
filedata <- reactive({
infile <- input$file
if (is.null(infile)) {
# User has not uploaded a file yet
return(NULL)
}
fread(infile$datapath, encoding = "UTF-8")
})
#output data
output$im = downloadHandler(
filename = function(){
paste("Request ",Sys.time(),".csv",sep="")
},
content = function(file){
write.csv(filedata(),file,row.names = F,fileEncoding = "latin1")
}
)
我理解为什么Windows用户可以下载正确的数据。但我不知道为什么Mac用户也可以这样做,因为我知道Mac和Linux都使用UTF-8。如果我设置fileEncoding = "latin1"
,那么当用户使用Mac时它应该会搞乱。
任何想法为什么会发生?
提前致谢。