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

4

我最近开始使用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中显示字符并输出到控制台,但在上述情况下无效。
我还尝试使用“文件/保存为编码”——> UTF-8。
我正在使用Windows 7。
如果我自己创建一个R笔记本,则不会出现此问题(这似乎表明问题可能出现在.R到.md转换上)。 以下内容正常运行:
working.Rmd
---
title: "R Notebook"
output: html_notebook
---
他喜欢吃炒面

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

我的最终目标是在HTML报告中导入一个(UTF-8编码的)文本文件,进行分析并显示过渡结果。
有没有什么方法可以解决这个问题?
1个回答

2
自从 knitr 1.21 版本以后,knitr::spin() 只接受使用 UTF-8 编码的 R 脚本。

这个已经起作用了,但只是部分地:我现在可以显示文本字符,但 print 函数的输出仍然是损坏的... 当我使用 readLines(指定编码)导入文本文件时,问题仍然存在,当我打印存储在 Rda 文件中的字符字符串时也是如此。 我觉得这可能与使用 Windows 和非中文环境计算机有关... 没关系,当我在进行中文文本挖掘时,我可以继续使用 R 笔记本 :) 除了这个问题,我还喜欢旋转! - stellaria
@stellaria 抱歉耽搁了,但我认为我刚刚在knitr的开发版本中修复了这个问题。你可以尝试使用devtools::install_github('yihui/knitr')吗? - Yihui Xie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接