RMarkdown外文字符渲染异常求助:render函数与Knit表现不一致
解决RMarkdown调用render时外文字符显示异常的问题
这个问题我在Windows下使用老版本R(3.4.x系列)时也碰到过,核心原因是rmarkdown::render()默认不会自动识别UTF-8编码的文档,而RStudio的「Knit」按钮会自动适配文件编码,所以出现了两种方式结果不一致的情况。试试下面几个解决方案:
显式指定render函数的编码参数
在调用render时,直接加上encoding = "UTF-8"参数,强制用UTF-8读取你的Rmd文件:rmarkdown::render("temp.rmd", encoding = "UTF-8")这是最直接的修复方式,因为「Knit」按钮本质上就是帮你自动加了这个编码参数。
在RMarkdown的YAML头部添加编码声明
把你的Rmd文档开头的YAML修改成这样,明确指定文档编码为UTF-8:--- output: html_document encoding: UTF-8 ---这样
rmarkdown::render()在处理文档时会自动读取这个编码设置,不用每次调用都加参数。检查R的全局编码设置
老版本的R在Windows下默认编码可能不是UTF-8,可以在R控制台先运行以下命令设置全局编码:options(encoding = "UTF-8")之后再调用render函数,也能帮你规避编码识别的问题。
确认文件确实是UTF-8编码保存
虽然你已经选了「Save with Encoding... > UTF-8」,但可以用R命令验证一下:# 读取文件内容,指定UTF-8编码 content <- readLines("temp.rmd", encoding = "UTF-8") # 打印内容看外文字符是否正常 print(content)如果打印出来的
abcåöäå显示正常,说明文件编码没问题,那问题肯定出在render的调用参数上。
内容的提问来源于stack exchange,提问作者mindlessgreen
相关产品推荐
相关产品推荐

