Кодирование в блестящем

#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 .