如何使用knitr::spin()正常显示/打印中文字符?
解决knitr::spin()生成HTML时中文乱码的问题
我之前也碰到过knitr spin处理中文时乱码的情况,这基本是编码不统一导致的——脚本文件编码、knitr读取编码、输出HTML的浏览器识别编码没对齐,下面是亲测有效的解决步骤:
确保你的R脚本文件(
not_working.R)以UTF-8编码保存。比如在RStudio里,右下角能看到当前文件编码,要是不是UTF-8,点击切换成UTF-8后重新保存。调用
spin()时明确指定编码参数,告诉knitr读取脚本时用UTF-8解析:knitr::spin("not_working.R", encoding = "UTF-8")在R脚本的注释开头添加HTML编码声明,让浏览器正确识别中文:
修改后的示例脚本working.R如下:#' <meta charset="UTF-8"> #' # Sample document #' #' Some text. #' 还有汉字。 #+ print("Some text") print("他喜欢吃炒面")
如果做完前两步还是有问题,可以检查R会话的默认编码:
Sys.getlocale()
要是输出里没有UTF-8,可以在R会话开头设置:
Sys.setlocale(category = "LC_ALL", locale = "zh_CN.UTF-8") # 对应中文系统,英文系统用"en_US.UTF-8"
一般前三个步骤就能解决90%的中文乱码问题啦,你试试~
内容的提问来源于stack exchange,提问作者stellaria
相关产品推荐
相关产品推荐

