闪亮:通过批处理文件启动应用时出现编码/特殊字符问题

时间:2019-05-09 12:25:58

标签: r batch-file shiny shinydashboard

我正在编写一个小的批处理脚本以启动Shinydashboard应用程序,因此不熟悉R的人可以轻松访问该应用程序。到目前为止,一切正常,除了通过批处理脚本启动应用程序时特殊字符(即ä,ö和ü)无法正确显示。所有R文件都以UTF-8编码保存。也许我缺少.bat文件中的一个选项?我已经在Sys.setlocale()命令中添加了R文件,但这并不能解决问题。我构建了一个小例子来说明问题:


apptest.R

library(shiny)

Sys.setlocale(category = "LC_ALL", locale = "German")

# Define UI ----
ui <- fluidPage(
  titlePanel("title panel with ä"),

  sidebarLayout(
    sidebarPanel("sidebar panel with ü"),
    mainPanel("main panel with ö")
  )
)

# Define server logic ----
server <- function(input, output) {

}

# Run the app ----
shinyApp(ui = ui, server = server, options = list(port = 7924))

runAppTest.bat

start "" "C:\Program Files\R\R-3.5.1\bin\Rscript.exe" apptest.R
SLEEP 5
start "" http://127.0.0.1:7924

您可能需要为您的版本调整C:\ Program Files \ R \ R-3.5.1 \ bin \ Rscript.exe,或者如果已将“ Rscript.exe”添加到PATH,则只需将其放置在其中。 / p>

如果您通过R-Studio启动该应用程序,则会看到字母显示正确。如果通过.bat文件执行此操作,则它看起来像这样:

enter image description here

在我看来,这是一个编码问题,但我无法解决。有人在这件事上帮助我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我可以建议在遇到类似问题时使用的解决方法。

使用包装文件来确保编码(此处为:callAppEncoded.R)。

脚本顺序为:

CMD / .bat -> callAppEncoded.R source("<PATHTO>/app.R", encoding = "UTF-8") -> app.R

可复制的示例(经过测试):

CMD / .bat

Rscript.exe  <PATHTO>/callAppEncoded.R

callAppEncoded.R

source("<PATHTO>/app.R", encoding = "UTF-8", echo = TRUE)

编辑:如OP添加echo = TRUE所建议。对我来说,这是可选的,因为需要OP。

app.R

library(shiny)

Sys.setlocale(category = "LC_ALL", locale = "German")

ui <- fluidPage(
  titlePanel("title panel with ä"),

  sidebarLayout(
    sidebarPanel("sidebar panel with ü"),
    mainPanel("main panel with ö")
  )
)

server <- function(input, output) {}

runApp(
  shinyApp(ui = ui, server = server, options = list(port = 7924))  
)