如何使用knitr :: spin显示/打印中文字符

时间:2018-03-28 19:45:59

标签: r character-encoding knitr non-ascii-characters chinese-locale

我最近开始使用knitr :: spin()将我的代码快速转换为html报告,到目前为止它一直很棒。

但是,在尝试在文本或代码部分中包含中文字符时遇到了问题。这是一个简短的例子:

not_working.R

#' # Sample document
#' 
#' Some text. 
#' 还有汉字。
#+

print("Some text")
print("他喜欢吃炒面")

#'

要生成输出,我使用:

knitr::spin("not_working.R")

字符按以下方式扭曲:

Sample document

Some text.

杩樻湁姹夊瓧銆

print("Some text")
## [1] "Some text"

print("浠栧枩娆㈠悆鐐掗潰")
## [1] "<U+00E4><U+00BB>–<U+013A>–<U+015B><U+0107><U+00AC><U+02D8><U+013A> 
<U+0090><U+0083><U+00E7><U+201A>’é<U+0165><U+02D8>"

我尝试过设置我的语言环境(在脚本内和.Rprofile中)。 这允许我在RStudio和控制台输出中显示字符,但不是在上面的情况下。

我也尝试过使用编码进行文件/保存 - &gt; UTF-8

我使用的是Windows 7。

如果我自己创建一个R笔记本(这似乎表明问题可能是.R到.md转换),则不会出现此问题。 以下工作正常:

working.Rmd

---
title: "R Notebook"
output: html_notebook
---
他喜欢吃炒面

```{r}
print("他喜欢吃炒面")
```

我的最终目标是导入一个(UTF-8编码的)文本文件,进行分析并显示中间结果,所有这些都在html报告中。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

Since knitr 1.21knitr::spin()只接受以UTF-8编码的R脚本。