- 已编辑
问题描述
在R Markdown文件渲染后生成的Word或者html文件中,中文正文能够正常显示,但表格中的中文编码错误。
代码及结果
下面是Rmd文件中的内容:
---
title: "能耗计算"
output: html_document
---
以下是各种车的能耗数据:
```{r}
#Sys.setlocale(category = "LC_ALL", locale = "Chinese")
table_energy <- data.frame(
"子类型" = c("moto","轿车 ","轻型客车 ","大型客车 ",
"轻型货车 ","中型货车 ","重型货车 ","农用运输车"),
"汽油消费比重" = c(2.87,63.55,7.27,9.97,5.8,3.57,2.8,4.18)
)
table_energy
```
Knit
后在viewer
中显示如下,可见中文文字部分正常显示,而由data.frame
生成的表格编码不对:
但是这段data.frame
的代码在console
面板运行是没问题的:
根据之前站内一个帖子《Rmarkdown生成html时,中文显示乱码》,我已经设置了:
Tools
- Project Options
- Code Editing
- 编码设为UTF-8
;
Tools
- Global Options
- Code
- Saving
- Default text encoding
设为 UTF-8
;
打开rmd
, File
- Save with Encoding
- UTF-8
。
在最后一个设置中,除了UTF-8
还尝试了好几种中文相关编码,或者是把三个设置均改为GB2312
,均没有效果。
然后我又尝试了输出PDF文档,表格部分仍然无法显示中文。具体操作是:根据《在R Markdown文档中使用中文》一文,先升级了tinytex
:tinytex::tlmgr_update()
,然后将Rmd文件的头部改成下面这样再输出:
title: "能耗计算"
documentclass: ctexart
output: rticles::ctex
由于这个问题可能和系统设置有关,所以说下我用的电脑的背景:在日本买的Surface,系统是Windows 10,平时系统语言设置为英文,Current language for non-Unicode program
设置为中文,sessioninfo()
如下:
sessionInfo()
## R version 4.0.3 (2020-10-10)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19042)
##
## Matrix products: default
##
## locale:
## [1] LC_COLLATE=Chinese (Simplified)_China.936
## [2] LC_CTYPE=Chinese (Simplified)_China.936
## [3] LC_MONETARY=Chinese (Simplified)_China.936
## [4] LC_NUMERIC=C
## [5] LC_TIME=Chinese (Simplified)_China.936
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## loaded via a namespace (and not attached):
## [1] compiler_4.0.3 magrittr_1.5 tools_4.0.3 htmltools_0.5.0
## [5] yaml_2.2.1 stringi_1.5.3 rmarkdown_2.5 knitr_1.30
## [9] stringr_1.4.0 xfun_0.22 digest_0.6.27 rlang_0.4.8
## [13] evaluate_0.14
此外,我之前碰到过其他的一些编码相关问题,发了个帖子《求助:RStudio读取日文文件名乱码》,可能跟这个问题的解决也有关系(也可能没有)。