I am using Windows 7, R2.15.3 and RStudio 0.97.320 with knitr knitr_1.1.6 (downloaded after Yihui fixed the 'Encoding: knitr and child files' issue on March 12)
我正在使用Windows 7,R2.15.3和RStudio 0.97.320与knitr knitr_1.1.6(在Yihui 3月12日修复'编码:编织和子文件'问题后下载)
> sessionInfo()
R version 2.15.3 (2013-03-01)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=Spanish_Argentina.1252 LC_CTYPE=Spanish_Argentina.1252 LC_MONETARY=Spanish_Argentina.1252
[4] LC_NUMERIC=C LC_TIME=Spanish_Argentina.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] lattice_0.20-13 pixmap_0.4-11 RColorBrewer_1.0-5 ade4_1.5-1 pander_0.3.1
[6] xtable_1.7-1
loaded via a namespace (and not attached):
[1] digest_0.6.3 evaluate_0.4.3 formatR_0.7 grid_2.15.3 knitr_1.1.6 stringr_0.6.2 tools_2.15.3
I have my R code in a file like this one:
我在我这样的文件中有我的R代码:
## @knitr RunMyCode
print('Called from .R file: á é í ó ú ñ')
# Workaround
my.text <- 'á é í ó ú ñ'
Encoding(my.text) <- "UTF-8"
print(my.text)
I call it from a Rmd file such as this:
我从Rmd文件中调用它,例如:
Title
========================================================
Spanish text: á é í ó ú ñ
Use it from .Rmd code: it comes out right...
```{r}
print('á é í ó ú ñ')
```
```{r ReadFunctions, cache=FALSE, echo=TRUE, eval=TRUE}
read_chunk('TestSpanishText.R')
```
Spanish text comes out garbled here:
```{r RunMyCode, echo=TRUE, eval=TRUE, cache=TRUE, dependson=c('ReadFunctions')}
```
My problem is with spanish characters typed in the .R file (which is UTF-8 encoded in RStudio). These characters are OK if typed in Rmd files (both parent and child files work well), but not in R files. As you can see below, Encoding()
does provide a workaround, but I wonder if there is another way, such as a global option? If I use Encoding(), I get the inverse problem in the RStudio console...
我的问题是在.R文件中输入的西班牙字符(在RStudio中是UTF-8编码)。如果在Rmd文件中键入(父文件和子文件都可以正常工作),这些字符就可以了,但在R文件中则不行。正如您在下面看到的,Encoding()确实提供了一种解决方法,但我想知道是否还有其他方法,例如全局选项?如果我使用Encoding(),我在RStudio控制台中得到反问题...
Title
Spanish text: á é í ó ú ñ
Use it from .Rmd code: it comes out right...
print("á é í ó ú ñ")
## [1] "á é í ó ú ñ"
read_chunk("TestSpanishText.R")
Spanish text comes out garbled here:
print("Called from .R file: á é à ó ú ñ")
## [1] "Called from .R file: á é à ó ú ñ"
# Workaround
my.text <- "á é à ó ú ñ"
Encoding(my.text) <- "UTF-8"
print(my.text)
## [1] "á é í ó ú ñ"
Thank you!
1 个解决方案
#1
5
Ideally I should have an encoding
argument in read_chunk()
, but since you were using UTF-8
, this probably works:
理想情况下,我应该在read_chunk()中有一个编码参数,但由于你使用的是UTF-8,这可能有效:
read_chunk(lines = readLines("TestSpanishText.R", encoding = "UTF-8"))
Please try this first. If it does not work, I will add an encoding
argument. Anyway, I'm sure this definitely works (it is just slightly longer):
请先试试。如果它不起作用,我将添加一个编码参数。无论如何,我确信这肯定有效(它只是稍长):
con = file("TestSpanishText.R", encoding = "UTF-8")
read_chunk(con)
close(con)
#1
5
Ideally I should have an encoding
argument in read_chunk()
, but since you were using UTF-8
, this probably works:
理想情况下,我应该在read_chunk()中有一个编码参数,但由于你使用的是UTF-8,这可能有效:
read_chunk(lines = readLines("TestSpanishText.R", encoding = "UTF-8"))
Please try this first. If it does not work, I will add an encoding
argument. Anyway, I'm sure this definitely works (it is just slightly longer):
请先试试。如果它不起作用,我将添加一个编码参数。无论如何,我确信这肯定有效(它只是稍长):
con = file("TestSpanishText.R", encoding = "UTF-8")
read_chunk(con)
close(con)