提问人:Tomasz Wojtas 提问时间:6/13/2023 最后编辑:Tomasz Wojtas 更新时间:6/20/2023 访问量:90
在 shiny-server 上提供 shiny 应用程序时的编码问题
encoding issue when serving shiny app on shiny-server
问:
我遇到这个问题已经有一段时间了。我正在通过不使用特殊字符来解决问题。然而,现在是解决它的时候了。
问题很简单:本地运行上完美工作的应用程序在移动到 /srv/shiny-server/ 时停止工作
精确地在波兰标志处对数点。下面是一个最小的工作示例:
library(shiny)
library(DT)
library(ggplot2)
df = data.frame(ę = rep(c("group1", "group2"), 50), ć = rnorm(n = 100))
ui <- fluidPage(
# Application title
titlePanel("Encoding example"),
sidebarLayout(
sidebarPanel(
""
),
mainPanel(
plotOutput("Plot")
)
)
)
server <- function(input, output) {
output$Plot <- renderPlot({
ggplot(df, aes(ę, ć)) +
geom_boxplot()
})
}
shinyApp(ui = ui, server = server)
以下是日志:
su: ignoring --preserve-environment, it's mutually exclusive with --login
Error in parse(file, keep.source = FALSE, srcfile = src, encoding = enc) :
/srv/shiny-server/encoding_debugging/app.R:4:17: unexpected input
3: library(ggplot2)
4: df = data.frame(▒^y
^
Error in sourceUTF8(fullpath, envir = new.env(parent = sharedEnv)) :
Error sourcing /srv/shiny-server/encoding_debugging/app.R
Calls: runApp ... shinyAppDir -> shinyAppDir_appR -> appObj -> func -> sourceUTF8
Execution halted
系统设置:
> Sys.getenv('LANG')
[1] "en_US.UTF-8"
> Sys.getlocale()
[1] "LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=en_US.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=C"
它不允许在变量/列名中包含任何特殊字符。如何解决这个问题?
我在 Ubuntu 22.04 上最新的 shiny-server 上服务。所有软件包都是最新的。
有什么建议吗?
此致敬意 托马斯
答:
0赞
Tomasz Wojtas
6/20/2023
#1
最后我在这里找到了它:https://github.com/rocker-org/rocker-versioned2/issues/397#issuecomment-1090829840
解决方案非常简单 - 只需添加“LC_ALL=en_US。UTF-8“ 转换为 /etc/default/locale
sudo su
echo "LC_ALL=en_US.UTF-8" >> /etc/default/locale
此致敬意!
评论
Sys.getenv('LANG')
Sys.getlocale()