Shiny: レンダリング関数でのutf-8表示の問題

作成日 2017年04月19日  ·  5コメント  ·  ソース: rstudio/shiny

内のすべてのファイルを保存するUTF-8エンコーディングは、すべての作るんUTF-8で文字ui.R正しく表示します。 ただし、すべてのレンダリング関数の文字はまだ正しく表示されません。

library(shiny)

server <- function(input, session, output) {
  output$UTF8_text = renderText({
    "中文"
  })
}

ui <- fluidPage(
  p("中文"),
  textOutput("UTF8_text")
)

shinyApp(ui = ui, server = server)

2つの漢字<U+4E2D>として表示され、 <U+6587>として表示されます。
下記を参照してください。
http://stackoverflow.com/questions/43485436/r-shiny-display-utf-8-characters-in-render-functions

Intermediate Medium Medium Type

最も参考になるコメント

対処すべきバグであるため、これを再開します。

全てのコメント5件

この問題を(UTF-8として)ファイルに保存してからrunApp()を呼び出すと、Windowsでこの問題を再現できます。 jsonliteがどのように変換しているかに問題があるのだろうか。

問題はrenderTextます:それはcapture.output(cat(value))呼び出します、そしてそれはWindowsのこれらの文字で正しく機能しないようです。

> cat("中文")
中文
> utils::capture.output(cat("中文"))
[1] "<U+4E2D><U+6587>"

これは問題のコードです:
https://github.com/rstudio/shiny/blob/f8f2acf/R/shinywrappers.R#L318

@ jiayi9 1つの回避策は、 renderUIを使用することですが、これにはこの問題はありません。

library(shiny)

server <- function(input, session, output) {
  output$UTF8_text = renderUI({
    "中文"
  })
}

ui <- fluidPage(
  p("中文"),
  uiOutput("UTF8_text")
)

shinyApp(ui = ui, server = server)

はい、代わりにrenderUI使用すると、この問題は解決します。

対処すべきバグであるため、これを再開します。

このページは役に立ちましたか?
0 / 5 - 0 評価