内のすべてのファイルを保存する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
この問題を(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
使用すると、この問題は解決します。
対処すべきバグであるため、これを再開します。
最も参考になるコメント
対処すべきバグであるため、これを再開します。