【发布时间】:2021-04-27 15:20:11
【问题描述】:
我想在 kableextra 表格的工具提示中显示带有变音符号(例如 äöü)和重音符号(例如 éè)的单词。但是,编码似乎出错了。见:
---
title: "R Markdown - Test umlaut"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(kableExtra)
library(dplyr)
```
如果我创建这个简单的表格,我会在工具提示中收到警告和中文 (?) 字母。如果我对popover = "café" 做同样的事情,我会收到同样的警告,而且根本没有弹出窗口。
```{r kableextra}
x <- tibble(a = "Motörhead", b = "Motörfeet", c = "café", d = "olé") %>%
kbl() %>%
kable_paper(full_width = F)
x %>% column_spec(3, tooltip = "café")
```
## Warning in `xml_attr<-.xml_node`(`*tmp*`, t, value = tooltip_list[t]): string is
## not in UTF-8 [1303]
让我感到困惑的是,元音变音/重音正确显示在表格的单元格中,但没有显示在工具提示/弹出窗口中。
现在发现使用enc2utf8可以解决问题:
```{r kableextra2}
x %>% column_spec(3, tooltip = enc2utf8("café"))
```
我觉得奇怪的是该字符串是通过 RStudio 提供的,所以它不应该以 utf-8 编码吗?我还尝试了文件-> 使用编码保存...-> utf-8。这没有帮助。
是 kableextra 的问题吗?有没有办法更优雅地解决它?我不太喜欢我的解决方案。
会话信息:
R version 4.0.3 (2020-10-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19042)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] dplyr_1.0.2 kableExtra_1.3.1
loaded via a namespace (and not attached):
[1] rstudioapi_0.13 knitr_1.30 xml2_1.3.2 magrittr_2.0.1 tidyselect_1.1.0
[6] rvest_0.3.6 munsell_0.5.0 colorspace_2.0-0 viridisLite_0.3.0 R6_2.5.0
[11] rlang_0.4.9 highr_0.8 stringr_1.4.0 httr_1.4.2 tools_4.0.3
[16] webshot_0.5.2 xfun_0.19 tinytex_0.28 ellipsis_0.3.1 htmltools_0.5.0
[21] yaml_2.2.1 digest_0.6.27 tibble_3.0.4 lifecycle_0.2.0 crayon_1.3.4
[26] purrr_0.3.4 vctrs_0.3.5 rsconnect_0.8.16 glue_1.4.2 evaluate_0.14
[31] rmarkdown_2.5 stringi_1.5.3 pillar_1.4.7 compiler_4.0.3 generics_0.1.0
[36] scales_1.1.1 pkgconfig_2.0.3
RStudio Version 1.3.1093
【问题讨论】:
-
您能否添加来自
sessionInfo()的输出,尤其是locale部分?
标签: r utf-8 r-markdown kableextra