【问题标题】:Unicode with knitr and Rmarkdown带有 knitr 和 Rmarkdown 的 Unicode
【发布时间】:2017-10-24 11:37:55
【问题描述】:

是否有一套在 knitr 和 Rmarkdown 中使用 Unicode 的最佳实践或文档?编织文档时,我似乎无法正确显示任何字形。

例如,这适用于控制台(在 Rstudio 中):

> cat("\U2660   \U2665  \U2666  \U2663")
♠   ♥   ♦   ♣

但是在编织时我得到了这个:

  • HTML

【问题讨论】:

  • sessionInfo() 请。

标签: r unicode knitr r-markdown


【解决方案1】:

这看起来像是一个特定于 Windows 的编码问题,并且可能与此问题有关:https://github.com/hadley/evaluate/issues/59 不幸的是,我们必须等待基础 R 中的修复,但如果您不必使用 cat(),并且此表达式是代码块中的 顶级 表达式(例如,不在 for 循环或 if 语句内),我想这可能有效:

knitr::asis_output("\U2660   \U2665  \U2666  \U2663")

它将字符串直接传递给 knitr 并绕过 cat(),因为 knitr 在 Windows 上无法可靠地捕获 cat() 写出的多字节字符——这取决于关于字符是否可以用系统的本机编码表示。

【讨论】:

    【解决方案2】:

    对于尝试在 Rstudio/Rmarkdown 文档中获得表情符号支持后遇到此问题的其他人,另一个可能的问题是,如果文件编码未设置为 UTF-8,则生成的编译文档也不支持表情符号.

    为了让表情符号在 Rmarkdown 中工作,您必须 change the file encoding of the Rmd document。转到文件 -> 使用编码重新打开,然后选择 UTF-8。

    确保文件以 UTF-8 编码打开后,您应该能够使用表情符号支持进行编译。

    您甚至应该能够将浏览器中的表情符号直接粘贴到文档中。 ?

    将所有文件的默认编码更改为 UTF-8 可能是个好主意,这样您就不必再处理这个问题了。

    【讨论】:

      【解决方案3】:

      Unicode:内联

      Phew, that was close `r knitr::asis_output("\U1F605  \U2660   \U2665  \U2666  \U2663")` 
      

      Unicode:块

      ```{r, echo=FALSE} 
      knitr::asis_output("Phew, that was close \U1F605  \U2660   \U2665  \U2666  \U2663")
      ```
      

      emo

      不幸的是,这个包还没有在 CRAN 上,但它可以用devtools::install_github("hadley/emo") 安装

      emo::ji("face")
      

      还有一些例子here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-06
        • 1970-01-01
        • 2015-09-02
        • 2014-09-05
        • 2016-05-29
        • 2017-12-31
        • 2018-11-13
        相关资源
        最近更新 更多