yihui / xaringan

Presentation Ninja 幻灯忍者 · 写轮眼
https://slides.yihui.org/xaringan/
Other
1.49k stars 280 forks source link

中文部分乱码 #18

Closed Lchiffon closed 7 years ago

Lchiffon commented 7 years ago

Windows 下在Template中部分代码会knit成乱码

- 从菜单 `File -> New File -> R Markdown -> From Template -> Ninja Presentation (Simplified Chinese)` 创建一个新文档;

--

- 点击 `Knit` 按钮编译文档;

--

- 或者点击 [RStudio 插件](https://rstudio.github.io/rstudioaddins/)<sup>*</sup> “Infinite Moon Reader” 在 RStudio 里实时预览幻灯片(每次你保存文档的时候,它会自动重新编译);

image

R version 3.2.2 (2015-08-14)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets 
[6] methods   base     

other attached packages:
[1] xaringan_0.1.3

loaded via a namespace (and not attached):
 [1] backports_1.0.4 magrittr_1.5    rprojroot_1.1  
 [4] htmltools_0.3.6 tools_3.2.2     withr_1.0.2    
 [7] yaml_2.1.14     memoise_1.0.0   Rcpp_0.12.8    
[10] stringi_1.1.2   rmarkdown_1.3   knitr_1.15.1   
[13] stringr_1.1.0   digest_0.6.11   devtools_1.12.0
[16] evaluate_0.10 

尝试过的方法:

  1. update所有packages
  2. Sys.setlocalte("LC_CTYPE", "chs")
  3. 安装github版本
  4. 去掉--
  5. 去掉-
  6. 修改中文标点成英文的
Lchiffon commented 7 years ago

我应该在我的环境下debug哪个函数?

yihui commented 7 years ago

在 Windows 下处理中文问题最好的办法就是把系统换成中文环境。次之的办法是 Sys.setlocale(, "Chinese") 然后用命令行编译,即在 R 里面敲 rmarkdown::render(),不能点 Knit,因为那会在新的 R 进程中编译,你当前进程中更改的区域语言设定不会被用到新进程中,除非你把这个更改写在 ~/.Rprofile 里面。

Lchiffon commented 7 years ago

0.0如果我设置系统语言为中文环境,重启Rstudio, knit得到: image

如果我用rmarkdown::render("Untitled.Rmd") Sys.setlocale("LC_CTYPE", "Chinese")下:

Error in yaml::yaml.load(string, ...) : 
  Scanner error: mapping values are not allowed in this context at line 4, column 5

Sys.setlocale("LC_CTYPE", "eng")下:

Error in yaml::yaml.load(string, ...) : 
  Reader error: control characters are not allowed: #81 at 16
Lchiffon commented 7 years ago

我目前的解决方案是在里面加几个回车, 需要设置系统语言为英文才能完美编译

- 从菜单
 `File -> New File -> R Markdown -> From Template -> Ninja Presentation (Simplified Chinese)` 
创建一个新文档;

--

- 点击 `Knit` 按钮编译文档;

--

- 或者点击 [RStudio 插件](https://rstudio.github.io/rstudioaddins/)
<sup>*</sup>
 “Infinite Moon Reader” 在 RStudio 里实时预览幻灯片(每次你保存文档的时候,它会自动重新编译);

image

Lchiffon commented 7 years ago

然后, ->和html的dom简直是瞪谁谁怀孕, 必须自己在一行里面, 和汉字写到一起就会乱码:(

- 从菜单 
`File -> New File -> R Markdown -> From Template -> Ninja Presentation (Simplified Chinese)` 
创建一个新文档;

--

- <sup>*</sup>点击 `Knit` 按钮编译文档;
- `->`点击 `Knit` 按钮编译文档;
- <span>123</span>这个有问题么

--

- 或者点击 [RStudio 插件](https://rstudio.github.io/rstudioaddins/)

image

yihui commented 7 years ago

刚注意到你的 R 版本是 3.2.2,恰好 Windows 下有个 grep() 千年八阿哥在我叨叨了无数遍之后3.2.3才修正。遇到问题,先试升级。现在基本上只要你的所有软件版本都是最新的,我已经有底气说所有涉及到 knitr 和 R Markdown 在 Windows 下的字符编码问题都已经解决了。

Lchiffon commented 7 years ago

哦哦哦, 果然更到3.2.3之后htmlwidgets里面grep的bug去掉了, 蟹蟹谢大大~

但是,....xaringan的问题依旧....

R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=Chinese (Simplified)_People's Republic of China.936 
[2] LC_CTYPE=Chinese (Simplified)_People's Republic of China.936   
[3] LC_MONETARY=Chinese (Simplified)_People's Republic of China.936
[4] LC_NUMERIC=C                                                   
[5] LC_TIME=Chinese (Simplified)_People's Republic of China.936    

attached base packages:
[1] stats     graphics  grDevices utils     datasets 
[6] methods   base     

other attached packages:
[1] wordcloud2_0.2.0

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.8     digest_0.6.11   rprojroot_1.1  
 [4] jsonlite_1.2    backports_1.0.4 magrittr_1.5   
 [7] evaluate_0.10   xaringan_0.1.3  stringi_1.1.2  
[10] rstudioapi_0.6  rmarkdown_1.3   tools_3.3.2    
[13] stringr_1.1.0   htmlwidgets_0.8 yaml_2.1.14    
[16] htmltools_0.3.6 knitr_1.15.1   

image

yihui commented 7 years ago

你这系统真是厉害了 word 哥。我之前在 Windows 下测试没这问题啊。如果你想御驾亲征杀掉这个八阿哥的话,我估计问题可能出在这几行的某一行里:https://github.com/yihui/xaringan/blob/master/R/render.R#L120-L125