多个操作系统上的 RMarkdown utf-8 错误

标签 r encoding rstudio knitr r-markdown

我们在多个操作系统上使用 RMarkdown 时遇到问题。

最初,在 Linux 系统 (Ubuntu 12.04 LTS) 上创建一个 .Rmd 文件,然后推送到 GitHub 存储库。

它可以在这个系统上编译(“编织”)而不会出现问题。

然后将它拉到安装了 RStudio 的 Windows 7 机器上。

在那里,尝试编译时,会出现以下错误:

Error in yaml::yaml.load(front_matter) : 
  Reader error: invalid leading UTF-8 octet: #FC at 66
Calls: <Anonymous> -> parse_yaml_front_matter -> <Anonymous> -> .Call
Execution halted
  • 在 Windows 系统上创建另一个 .Rmd 文件时,它可以完美运行。
  • 在 Windows 系统上创建另一个 .Rmd 文件,并将“有问题”文件的前几行以外的所有内容复制到另一个 .Rmd 文件,并编译此文件时,它可以完美运行。

  • 我在两个操作系统上用 HEX(在 Sublime 中)比较了两个文件:它们完全相同。

    之前有没有其他人看到过这个错误?

    更新 :根据 http://www.endmemo.com/unicode/unicodeconverter.php,它的 UTF-8“转义 Unicode”是\uFC,似乎是德语元音变音(“ü”)引起了这个问题。

    通常,Windows 上的 R、RStudio 或 knitr 似乎无法正确识别 Unicode。当我在一个新的 .Rmd 文件中输入一些变音符号并编织它时,我会得到诸如“öää”之类的输出。在 RStudio > 工具 > 全局选项中,我将默认文本编码设置为“UTF-8”。我也在 RProfile.site 文件( options(encoding="UTF-8") )中为 R 做了这个。

    更新 2: library(rmarkdown); sessionInfo()
    R version 3.1.2 (2014-10-31)
    Platform: x86_64-w64-mingw32/x64 (64-bit)
    
    locale:
    [1] LC_COLLATE=German_Switzerland.1252  LC_CTYPE=German_Switzerland.1252    LC_MONETARY=German_Switzerland.1252
    [4] LC_NUMERIC=C                        LC_TIME=German_Switzerland.1252    
    
    attached base packages:
    [1] stats     graphics  grDevices utils     datasets  methods   base     
    
    other attached packages:
    [1] rmarkdown_0.4.2
    
    loaded via a namespace (and not attached):
    [1] digest_0.6.8    htmltools_0.2.6 tools_3.1.2    
    

    在 Windows 7 上,而在 Ubuntu 上,它是:
    R version 3.1.2 (2014-10-31)
    Platform: x86_64-pc-linux-gnu (64-bit)
    
    locale:
     [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
     [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=en_US.UTF-8       LC_NAME=C                 
     [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
    
    attached base packages:
    [1] stats     graphics  grDevices utils     datasets  methods   base     
    
    other attached packages:
    [1] rmarkdown_0.3.10
    
    loaded via a namespace (and not attached):
    [1] digest_0.6.8    htmltools_0.2.6 tools_3.1.2   
    

    我已经怀疑问题出在不同的语言环境中……我该如何解决这个问题?

    最佳答案

    我对此非常晚,但我通过将选项编码更改回“ native ”解决了该问题:

    options(encoding="native")
    

    并将默认的windows编码更改为UTF-8(这打开了与其他程序编码相关的不可忽略数量的其他问题的潘多拉盒子;因此,请谨慎对待)。

    关于多个操作系统上的 RMarkdown utf-8 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27982566/

    相关文章:

    r - 如何在 R 中组合两个列表

    Python 打印到终端 shell unicode

    java - R调用java中文编码乱码

    r - 代码执行完成时的电子邮件(或类似)通知

    r - 防止在 R Notebook 交互中进行 block 评估

    r - r中的散点图具有巨大的独特观察

    java - 无法在 Mac OS 10.11 上加载 R xlsx 包

    r - Logistic 回归的模型拟合统计量

    javascript - 设置 WebSocket 编码

    r - Python block 的语法突出显示不起作用