首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >闪亮应用中的Unicode文本

闪亮应用中的Unicode文本
EN

Stack Overflow用户
提问于 2018-08-03 23:04:08
回答 1查看 1.1K关注 0票数 4

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

这是一个不处理表情符号的简单例子。它从emoji.json文件中加载三个表情:

代码语言:javascript
复制
{"emoji":["","",""]}

,并简单地在app.R中呈现文本。

代码语言:javascript
复制
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计算机上完成的。谢谢!

EN

回答 1

Stack Overflow用户

发布于 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文件:

代码语言:javascript
复制
{"emoji":["0x0001F605","0x0001F612","0x0001F62B"]}

闪亮的应用程序:

代码语言:javascript
复制
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正确显示:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51675459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档