Shiny中使用Unicode星号符号出现编码转换异常问题求助
解决Shiny UI中Unicode五星显示异常的问题
问题根因很明确:R字符串里的单个反斜杠是转义符,\260会被R当成八进制转义序列解析成度符号°,剩下的5直接作为文本输出,所以才会出现°5重复的情况。要让浏览器正确识别CSS里的Unicode五星序列,得让R把反斜杠原封不动传给浏览器,或者换用其他无需转义的写法,以下是三种可行方案:
方案1:使用双反斜杠转义
在R字符串里,要输出单个反斜杠必须用两个反斜杠\\,这样R会把\\2605解析为字符串\2605传给浏览器,浏览器就能识别成五星:
library(shiny) ui <- fluidPage( tags$div(style = "font-size: 24px; color: gold; content: '\\2605\\2605\\2605\\2605\\2605';") ) server <- function(input, output) {} shinyApp(ui, server)
方案2:直接使用五星字符本身
不用转义序列,直接复制粘贴五星符号★到代码里,R不会对它做转义处理,直接传给浏览器:
library(shiny) ui <- fluidPage( tags$div(style = "font-size: 24px; color: gold;", "★★★★★") ) server <- function(input, output) {} shinyApp(ui, server)
方案3:使用HTML实体编码
用五星的十进制HTML实体★或十六进制实体★,完全避开反斜杠转义的问题:
library(shiny) ui <- fluidPage( tags$div(style = "font-size: 24px; color: gold;", "★★★★★") ) server <- function(input, output) {} shinyApp(ui, server)
内容的提问来源于stack exchange,提问作者koolmees
相关产品推荐
相关产品推荐

