楼主: yijiaobani
2913 2

[问答] shiny downloadHandler 下载文件名 中文乱码 [推广有奖]

  • 4关注
  • 5粉丝

已卖:70份资源

博士生

26%

还不是VIP/贵宾

-

威望
0
论坛币
196 个
通用积分
10.7311
学术水平
2 点
热心指数
8 点
信用等级
0 点
经验
5127 点
帖子
147
精华
0
在线时间
236 小时
注册时间
2015-5-18
最后登录
2020-10-28

楼主
yijiaobani 发表于 2017-11-15 11:09:11 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
大家好,我最近看shiny的下载功能(http://shiny.rstudio.com/gallery/download-file.html),我发现如果将文件名改成中文,或者里面有中文字符,下载的文件名就是乱码,里面的内容没问题。

源代码:
  1. library(shiny)

  2. # Define UI for data download app ----
  3. ui <- fluidPage(
  4.   
  5.   # App title ----
  6.   titlePanel("Downloading Data"),
  7.   
  8.   # Sidebar layout with input and output definitions ----
  9.   sidebarLayout(
  10.    
  11.     # Sidebar panel for inputs ----
  12.     sidebarPanel(
  13.       
  14.       # Input: Choose dataset ----
  15.       selectInput("dataset", "Choose a dataset:",
  16.                   choices = c("rock", "pressure", "cars")),
  17.       
  18.       # Button
  19.       downloadButton("downloadData", "Download")
  20.       
  21.     ),
  22.    
  23.     # Main panel for displaying outputs ----
  24.     mainPanel(
  25.       
  26.       tableOutput("table")
  27.       
  28.     )
  29.    
  30.   )
  31. )

  32. # Define server logic to display and download selected file ----
  33. server <- function(input, output) {
  34.   
  35.   # Reactive value for selected dataset ----
  36.   datasetInput <- reactive({
  37.     switch(input$dataset,
  38.            "rock" = rock,
  39.            "pressure" = pressure,
  40.            "cars" = cars)
  41.   })
  42.   
  43.   # Table of selected dataset ----
  44.   output$table <- renderTable({
  45.     datasetInput()
  46.   })
  47.   
  48.   # Downloadable csv of selected dataset ----
  49.   output$downloadData <- downloadHandler(
  50.     filename = function() {
  51.       paste(input$dataset, ".csv", sep = "")
  52.     },
  53.     content = function(file) {
  54.       write.csv(datasetInput(), file, row.names = FALSE)
  55.     }
  56.   )
  57.   
  58. }

  59. # Create Shiny app ----
  60. shinyApp(ui, server)
复制代码

修改后的代码:
  1. library(shiny)

  2. # Define UI for data download app ----
  3. ui <- fluidPage(
  4.   
  5.   # App title ----
  6.   titlePanel("Downloading Data"),
  7.   
  8.   # Sidebar layout with input and output definitions ----
  9.   sidebarLayout(
  10.    
  11.     # Sidebar panel for inputs ----
  12.     sidebarPanel(
  13.       
  14.       # Input: Choose dataset ----
  15.       selectInput("dataset", "Choose a dataset:",
  16.                   choices = c("rock", "pressure", "cars")),
  17.       
  18.       # Button
  19.       downloadButton("downloadData", "Download")
  20.       
  21.     ),
  22.    
  23.     # Main panel for displaying outputs ----
  24.     mainPanel(
  25.       
  26.       tableOutput("table")
  27.       
  28.     )
  29.    
  30.   )
  31. )

  32. # Define server logic to display and download selected file ----
  33. server <- function(input, output) {
  34.   
  35.   # Reactive value for selected dataset ----
  36.   datasetInput <- reactive({
  37.     switch(input$dataset,
  38.            "rock" = rock,
  39.            "pressure" = pressure,
  40.            "cars" = cars)
  41.   })
  42.   
  43.   # Table of selected dataset ----
  44.   output$table <- renderTable({
  45.     datasetInput()
  46.   })
  47.   
  48.   # Downloadable csv of selected dataset ----
  49.   output$downloadData <- downloadHandler(
  50.     filename = function() {
  51.       paste(input$dataset,"你好", ".csv", sep = "")
  52.     },
  53.     content = function(file) {
  54.       write.csv(datasetInput(), file, row.names = FALSE)
  55.     }
  56.   )
  57.   
  58. }

  59. # Create Shiny app ----
  60. shinyApp(ui, server)
复制代码

下载后的文件名:
rock%FFFFFFE4%FFFFFFBD%FFFFFFA0%FFFFFFE5%FFFFFFA5%FFFFFFBD.csv

我怀疑是编码的问题,在代码中增加这行代码:

  1. options(encoding = 'UTF-8')
复制代码
也是乱码的文件名,不知道有没有大神遇到过此类问题,能否给出解决方案。



十分感谢



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:download handle Shiny 中文乱码 下载文件 操作建议 shiny 中文乱码

<img src="stati ...

沙发
platypus 发表于 2018-8-28 15:14:41
https://github.com/rstudio/shiny/issues/1858

藤椅
yangming98 发表于 2018-8-29 20:54:32 来自手机
yijiaobani 发表于 2017-11-15 11:09
大家好,我最近看shiny的下载功能(http://shiny.rstudio.com/gallery/download-file.html),我发现如果将 ...
学习了学习了

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-19 09:40