在 Shiny 中编码
Posted
技术标签:
【中文标题】在 Shiny 中编码【英文标题】:Encoding in Shiny 【发布时间】:2014-08-11 23:44:32 【问题描述】:我正在使用 RStudio 版本 0.98.507。关于初始工作工具的简短信息:
R version 3.1.0 (2014-04-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252
[3] LC_MONETARY=German_Germany.1252 LC_NUMERIC=C
[5] LC_TIME=German_Germany.1252
other attached packages:
[1] shinyapps_0.3.53 RJSONIO_1.2-0.2 shiny_0.9.1.9013
loaded via a namespace (and not attached):
[1] bitops_1.0-6 Cairo_1.5-5 caTools_1.17 digest_0.6.4
[5] htmltools_0.2.4 httpuv_1.3.0 Rcpp_0.11.1 RCurl_1.95-4.1
[9] shinysky_0.1.2 tools_3.1.0 xtable_1.7-3
我在闪亮的服务器上部署闪亮的应用程序时遇到了问题。问题在某个时候得到了解决,但在它再次出现之后。现在我不能再修复它了。我的问题是 helpers.R 中的德语字母。不幸的是,我无法避免使用它们。我正在将我的帮助脚本 helpers.R 采购到 server.R 中,就像在 Shiny Tutorial 中显示和教授的那样。 我所有的 R 脚本都小心地保存在 UTF-8 格式下。我无法使用命令
options(encoding="UTF-8")
因为执行后,命令 deployApp("app") 不起作用。我使用
设置位置Sys.setlocale(category = "LC_ALL", locale = "German")
它也不起作用。 我不明白,为什么 mainPanel 和 sidebarLayout 中的字母是可读的,而 helpers.R 中的字母却不是。有人可以帮我解决这个悖论吗?
示例
ui.R
library(shiny)
shinyUI(fluidPage(withMathJax(),
titlePanel("Währung"),
sidebarLayout(position="right",
sidebarPanel(
h5("Bedienfenster"),
sliderInput('x', 'x axis',
value=50, min=3, max=150, step=1,)
),
mainPanel(
plotOutput("Plot")
)
)
))
server.R
shinyServer(function(input, output)
output$Plot <- renderPlot(
x <- rnorm(input$x)
hist(x, main="", xlab="", ylab="")
title(main="Schätzgerade", xlab="Währung", ylab="Dichte")
)
)
部署后我会关注app。
【问题讨论】:
您是否尝试在source()
命令中设置encoding=
参数?
当然和opitions(encoding="UTF-8")
效果一样
那么,您对问题的描述似乎不足以使其可重现给其他人。这将使进一步帮助您变得非常困难。你能整理一个其他人可以运行以体验相同行为的最小工作示例吗?
这很可能是 ShinyApps.io 的回归错误,我们已经意识到了这一点。请继续关注修复:)
我在 Linux 中工作并修复了一些更改我的语言环境参数的编码问题,$sudo update-locale LANGUAGE=es_ES:es
(在我的例子中,我使用西班牙语口音)。如果您使用的是 Linux,请使用 $locale
检查您当前的语言环境参数并试一试。
【参考方案1】:
作为一种解决方法(我尚未测试),您是否尝试过使用转义的 Unicode 字符,例如 "W\u00E4hrung"
而不是 "Währung"
?您可以使用?Quotes
找到有关如何执行此操作的详细信息,http://en.wikipedia.org/wiki/List_of_Unicode_characters 有一个 Unicode 字符列表。
【讨论】:
【参考方案2】:对我有用的是更改文件的编码(在 Rstudio File>Reopen with encoding 中)并设置编码:
用于 ui.R 的 UTF-8 用于 server.R 和 global.R 的 WINDOWS-1252我不知道原因,但这对我来说是个窍门。
【讨论】:
当闪亮的 0.10.1 发布时这将不起作用(希望在几天后)。这些 R 脚本必须以 UTF-8 编码。【参考方案3】:Shiny 0.10.1 已在 CRAN 上发布,所以只需 install.packages('shiny')
。请忽略下面的答案。
直到最近我们才真正开始研究 Windows 下的 Unicode 问题。现在问题应该解决了,您可以尝试从这里安装最新的开发版本:
devtools::install_github('rstudio/shiny')
我们计划在即将发布的闪亮 0.10.1 中发布它,因此如果您能帮助我们测试它,我们将不胜感激。基本上,您需要做的就是确保 ui.R 和 server.R 以 UTF-8 编码。您不需要将options(encoding = 'UTF-8')
或将ä
转义为\u00E4
。
【讨论】:
以上是关于在 Shiny 中编码的主要内容,如果未能解决你的问题,请参考以下文章
使用 R Shiny 中的 sliderInput 动态渲染等值线图
R Shiny、Leaflet 的问题 --> SelectInput 以更改下拉菜单中的选择