我正在尝试制作包含表情符号的闪亮打印文本输出。不幸的是,它似乎没有打印表情符号,而是打印不同符号的Unicode数字,如下所示:

这是一个不处理表情符号的简单例子。它从emoji.json文件中加载三个表情:
{"emoji":["","",""]},并简单地在app.R中呈现文本。
library(jsonlite)
library(shiny)
library(tidyverse)
ui <- fluidPage(textOutput("emoji"))
server <- function(input, output) {
output[["emoji"]] <- renderText({
"emoji.json" %>%
read_json() %>%
.[["emoji"]] %>%
str_c(collapse="")
})
}
shinyApp(ui = ui, server = server)感觉像是我需要在某个地方做一些转换,但我不知道是什么。这也是在使用R版本3.5.0的Windows 10计算机上完成的。谢谢!
发布于 2018-08-04 00:15:22
我认为这取决于您的emoji.json文件的编码。当我将示例文件复制到TextEdit (我在苹果电脑上),将其转换为纯文本,并将其保存为UTF-8编码的.json时,表情符号在TextEdit和您发布的闪亮应用程序中都能正确显示。
我认为问题可能是编码的问题,所以我用十六进制的等效表情符号替换了表情符号,并用Western (Windows Latin 1)编码保存了文件,这样它们就会显示为十六进制数字的纯文本。
要让它们在闪亮中正确显示,只需组合从十六进制转换的as.integer和将它们呈现为UTF8字符的intToUtf8即可。
使用Western (Windows Latin 1)编码的十六进制表情符号的JSON文件:
{"emoji":["0x0001F605","0x0001F612","0x0001F62B"]}闪亮的应用程序:
library(jsonlite)
library(shiny)
library(tidyverse)
ui <- fluidPage(textOutput("emoji"))
server <- function(input, output) {
output[["emoji"]] <- renderText({
"emoji3.json" %>%
read_json() %>%
.[["emoji"]] %>%
sapply(function(x) {
intToUtf8(as.integer(x))
})
})
}
shinyApp(ui = ui, server = server)Emoji正确显示:

https://stackoverflow.com/questions/51675459
复制相似问题