Encoding in Shiny

And_R picture And_R · Jun 21, 2014 · Viewed 11.9k times · Source

I'm working with RStudio Version 0.98.507. Short Info about initial working instruments:

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   

I have a problem by deploying my shiny app on the shiny server. The problem was at some point solved, but after it appears again. Now I cannot fix it any more. My problem are the german letters in helpers.R. Unfortunately, I cannot avoid using them. I'm sourcing my help scrpits helpers.R into server.R like it is shown and taught in Shiny Tutorial. All my R-scripts are carefully saved under UTF-8 format. I cannot use the command

options(encoding="UTF-8")

because after executing it, the command deployApp("app") doesn't work. I set location using

Sys.setlocale(category = "LC_ALL", locale = "German")

It also doesn't work. I cannot understand, why the letters in mainPanel and sidebarLayout are readable, but those from helpers.R not. Can someone help me to solve this paradox?

EXAMPLE

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")
        })
})

After deploying I get following app.

Answer

James Trimble picture James Trimble · Jun 25, 2014

As a workaround (which I haven't tested), have you tried using escaped Unicode characters, such as "W\u00E4hrung" instead of "Währung"? You can can find details of how to do this with ?Quotes, and there is a list of Unicode characters at http://en.wikipedia.org/wiki/List_of_Unicode_characters.