wns*_*mth 6 encoding r 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
Run Code Online (Sandbox Code Playgroud)
我在两个操作系统上比较了HEX(Sublime)中的两个文件:它们完全相同.
之前有人见过那个错误吗?
更新:似乎德国变形金刚("ü")引起了这个问题,因为它的UTF-8"Escaped Unicode"是\ uFC,根据http://www.endmemo.com/unicode/unicodeconverter.php
通常,似乎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
Run Code Online (Sandbox Code Playgroud)
在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
Run Code Online (Sandbox Code Playgroud)
我已经怀疑问题是不同的区域设置......我该如何解决这个问题?
我对此已经很晚了,但我通过将选项编码改回“native”解决了这个问题:
options(encoding="native")
Run Code Online (Sandbox Code Playgroud)
并将默认的Windows编码更改为UTF-8(这打开了与其他程序的编码相关的不可忽略的其他问题的潘多拉魔盒;因此,请谨慎对待)。