#r #utf-8 #shiny #shiny-server
#r #utf-8 #блестящий #shiny-сервер
Вопрос:
Я работаю с 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
У меня возникла проблема с развертыванием моего приложения shiny на сервере shiny. Проблема была в какой-то момент решена, но после она появляется снова. Теперь я больше не могу это исправить. Моя проблема — немецкие буквы в helpers.R. К сожалению, я не могу избежать их использования. Я отправляю свою справку scrpits helpers.R на сервер.R, как показано и преподается в Shiny Tutorial.
Все мои R-скрипты тщательно сохранены в формате UTF-8. Я не могу использовать команду
options(encoding="UTF-8")
потому что после его выполнения команда deployApp («приложение») не работает. Я установил местоположение, используя
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")
})
})
После развертывания я получаю следующее приложение.
Комментарии:
1. Вы пытались установить
encoding=
параметр вsource()
команде?2. Конечно, это имеет тот же эффект, что и
opitions(encoding="UTF-8")
3. Ну, тогда не кажется, что вашего описания проблемы достаточно, чтобы сделать ее воспроизводимой для других. Это очень затруднит дальнейшую помощь вам. Можете ли вы собрать минимальный рабочий пример, который кто-то другой мог бы запустить, чтобы испытать такое же поведение?
4. Это, скорее всего, ошибка регрессии ShinyApps.io , и мы осознаем это. Следите за исправлением 🙂
5. Я работаю в Linux и исправил некоторые проблемы с кодировкой, изменив мои параметры локали
$sudo update-locale LANGUAGE=es_ES:es
(в моем случае я использую испанский акцент). Если вы используете Linux, проверьте свои текущие параметры локали с$locale
помощью и попробуйте.
Ответ №1:
В качестве обходного пути (который я не тестировал) вы пробовали использовать экранированные символы Юникода, например, "Wu00E4hrung"
вместо "Währung"
? Вы можете найти подробную информацию о том, как это сделать ?Quotes
, и есть список символов Юникода по адресу http://en.wikipedia.org/wiki/List_of_Unicode_characters .
Ответ №2:
Что для меня работает, так это изменить кодировку файла (в Rstudio File> Повторно открыть с помощью encoding) и установить encoding:
- UTF-8 для ui.R
- WINDOWS-1252 для сервера.R и global.R
Я не знаю причины, но это сделало трюк для меня.
Комментарии:
1. Это не будет работать, когда будет выпущен shiny 0.10.1 (надеюсь, через несколько дней). Эти R-скрипты должны быть закодированы в UTF-8.
Ответ №3:
Shiny 0.10.1 был выпущен на CRAN, так что просто install.packages('shiny')
. Пожалуйста, проигнорируйте ответ ниже.
Мы действительно не начали работать над проблемой Unicode под Windows до недавнего времени. Теперь проблема должна быть решена, и вы можете попробовать установить последнюю версию для разработки отсюда:
devtools::install_github('rstudio/shiny')
Мы планируем отправить его в shiny 0.10.1, который скоро выйдет, поэтому мы будем признательны, если вы поможете нам протестировать его. В основном все, что вам нужно сделать, это убедиться, что пользовательский интерфейс.R и server.R кодируются в UTF-8. Вам не нужно устанавливать options(encoding = 'UTF-8')
или экранировать ä
как u00E4
.