R Markdown 中 kableextra popovers/tooltips 中 umlauts/acute 重音的 UTF-8 编码
UTF-8 encoding of umlauts/acute accent in popovers/tooltips of kableextra in R Markdown
我想在 kableextra table 的工具提示中显示带有变音符号(即 äöü)和重音符号(例如 éè)的单词。但是,编码似乎出了问题。参见:
---
title: "R Markdown - Test umlaut"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(kableExtra)
library(dplyr)
```
如果我创建这个简单的 table,我会在工具提示中收到警告和中文 (?) 字母。如果我对 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]
令我困惑的是 umlauts/accents 在 table 的单元格中正确显示,但在 tooltip/popover.
中却没有
现在我发现问题可以用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
似乎由于某种原因,您的文本未编码为 UTF-8,从而导致出现问题。这可以用 Encoding(x)
或 validUTF8(x)
.
检查
您可以尝试使用 Encoding(x) = "UTF-8"
手动设置编码。
无论哪种方式,我都建议您从 sessionInfo()
和 RStudio 语言选项中检查您的语言环境。
这似乎是 kableExtra
中的错误,已在此处修复:https://github.com/haozhu233/kableExtra/pull/584。警告消息表明了该问题:kableExtra
使用您的输入设置了一些 XML 属性。 xml2
包希望这些字符串采用 UTF-8 编码,但默认情况下,大多数 Windows 系统使用其他编码。
也许这应该在 xml2
中得到解决,但至少有了那个补丁,您可以解决这个问题。
我想在 kableextra table 的工具提示中显示带有变音符号(即 äöü)和重音符号(例如 éè)的单词。但是,编码似乎出了问题。参见:
---
title: "R Markdown - Test umlaut"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(kableExtra)
library(dplyr)
```
如果我创建这个简单的 table,我会在工具提示中收到警告和中文 (?) 字母。如果我对 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]
令我困惑的是 umlauts/accents 在 table 的单元格中正确显示,但在 tooltip/popover.
中却没有现在我发现问题可以用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
似乎由于某种原因,您的文本未编码为 UTF-8,从而导致出现问题。这可以用 Encoding(x)
或 validUTF8(x)
.
您可以尝试使用 Encoding(x) = "UTF-8"
手动设置编码。
无论哪种方式,我都建议您从 sessionInfo()
和 RStudio 语言选项中检查您的语言环境。
这似乎是 kableExtra
中的错误,已在此处修复:https://github.com/haozhu233/kableExtra/pull/584。警告消息表明了该问题:kableExtra
使用您的输入设置了一些 XML 属性。 xml2
包希望这些字符串采用 UTF-8 编码,但默认情况下,大多数 Windows 系统使用其他编码。
也许这应该在 xml2
中得到解决,但至少有了那个补丁,您可以解决这个问题。