2013-03-29 8 views
7

używam Windows 7, R2.15.3 i RStudio 0.97.320 z knitr knitr_1.1.6 (pobranych po Yihui ustaliła 'Kodowanie: knitr i dziecko files' emisyjnej 12 marca)Czy istnieje opcja knitr wymuszająca kodowanie UTF-8 w dołączonych plikach R?

> 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 

Mam Kod R w pliku jak ten:

## @knitr RunMyCode 
print('Called from .R file: á é í ó ú ñ') 

# Workaround 
my.text <- 'á é í ó ú ñ' 
Encoding(my.text) <- "UTF-8" 
print(my.text) 

nazywam go z pliku RMD takie jak to:

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')} 
``` 

Mój problem jest z hiszpańskim znaków wpisanych w pliku .R (co jest kodowane w UTF-8 w RStudio). Te znaki są poprawne, jeśli są wpisane w plikach Rmd (zarówno pliki nadrzędne i podrzędne działają dobrze), ale nie w plikach R. Jak widać poniżej, Encoding() zapewnia obejście tego problemu, ale zastanawiam się, czy istnieje inny sposób, na przykład opcja globalna? Jeśli używam Encoding(), otrzymuję problem odwrotny w konsoli 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] "á é í ó ú ñ" 

Dziękujemy!

Odpowiedz

5

Idealnie powinny Mam encoding argumentu read_chunk(), ale skoro uzywasz UTF-8, to prawdopodobnie działa:

read_chunk(lines = readLines("TestSpanishText.R", encoding = "UTF-8")) 

Spróbuj ten pierwszy. Jeśli to nie zadziała, dodam argument encoding. W każdym razie, jestem pewien, że to na pewno działa (jest to tylko nieco dłużej):

con = file("TestSpanishText.R", encoding = "UTF-8") 
read_chunk(con) 
close(con) 
+0

Pierwsze rozwiązanie działa świetnie !! Dziękuję Yihui !! – ap53

+0

Próbowałem tego podejścia ('con = plik (" TestSpanishText.R ", kodowanie =" UTF-8 "); read_chunk (con); zamknij (con)') dla mojego problemu: https://stackoverflow.com/questions/48307007/printing-utf-8-russian-characters-in-r-rmd-knitr, ale nie udało się. ??? – IVIM

Powiązane problemy