حفظ جميع الملفات في 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)
يتم عرض الحرفين الصينيين 中
بالشكل <U+4E2D>
و 文
معروض <U+6587>
.
من فضلك، انظر بالأسفل.
http://stackoverflow.com/questions/43485436/r-shiny-display-utf-8-characters-in-render-functions
يمكنني إعادة إنتاج هذه المشكلة في Windows عندما أقوم بحفظها في ملف (مثل UTF-8) ثم استدعاء runApp()
عليه. أتساءل عما إذا كانت هذه مشكلة في كيفية تحويل 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 أحد الحلول هو استخدام renderUI
، والذي لا يحتوي على هذه المشكلة:
library(shiny)
server <- function(input, session, output) {
output$UTF8_text = renderUI({
"中文"
})
}
ui <- fluidPage(
p("中文"),
uiOutput("UTF8_text")
)
shinyApp(ui = ui, server = server)
نعم ، استخدام renderUI
بدلاً من ذلك يحل هذه المشكلة.
أنا أعيد فتح هذا لأنه خطأ يجب معالجته.
التعليق الأكثر فائدة
أنا أعيد فتح هذا لأنه خطأ يجب معالجته.