我正在编写一个小的批处理脚本以启动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文件执行此操作,则它看起来像这样:
在我看来,这是一个编码问题,但我无法解决。有人在这件事上帮助我吗?谢谢!
答案 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))
)