• R语言
  • Rmarkdown生成html时,中文显示乱码

newlife

windows的编码问题确实得折腾啊…

试试这个能不能编译成功:用UTF-8编码,我测试了一下,在win跟ubuntu下都没问题

https://raw.githubusercontent.com/tcgriffith/cosx_exps/master/test_23.rmd

    newlife
    是在Rstudio里knitr成html 也正常显示中文了对吧,那更改 Rmd 的源文件编码应该就好,两种办法

    记事本,

    • 另存为- 选择编码为UTF-8

    Rstudio

    • 在Rstudio打开有问题的Rmd文件,
    • 保存Rmd,Save with encoding,然后选UTF-8,
    • 重新打开Rmd文档,编译

      tctcab
      我刚刚表达可能有偏差。。你刚才的那个链接,我在浏览器中输入,直接就显示了编译后的结果。。找不到代码。。。

        newlife

        打开那个链接,右键另存为本地文件, 然后Rstudio里打开,然后编译试试

          tctcab
          啊!!!我解决了。。但是好诡异好诡异好诡异。
          解决方法是:
          1、Rstudio都是按照你最早回复的那样设置的。。。
          2、但是我的Rmd文件按照“ANSI—简体中文GBK”的形式保存,
          3、在Rstudio中,用render语句执行Rmd文件,然后,然后,生成的网页的中文就正常显示了。。。。

          tctcab
          之前的乱码,就是“UTF-8”形式下编辑的中文,在“ANSI-简体中文GBK”格式下的展示内容。
          而我的Rstudio是正常处理显示中文的,但是加载了Rmarkdown之后,却将UTF-8形式的转化为了ANSI形式的。。。这是为啥??

          tctcab
          更诡异的事情出现了。
          我将代码用UTF-8形式存储为Rmd文件,然后在Rstudio中,选择打开改文件,之后再Rstudio中选择knit to html按钮,结果,结果,正常输出了html,中文正常显示了。。。
          我的乖乖,这是为啥。。

            newlife

            正常了就好

            如果精力实在旺盛可以试试如何复现最开始的问题,然后回来报告一下?

              tctcab
              但是使用render语句执行,仍然无法成功。。。我的系统真的好诡异

                yihui
                谢老大,既然你出现了,我就厚颜再问一个问题。
                运行含有shiny语句和中文的UTF-8形式的Rmd文件,直接运行run语句,中文无法正常显示,
                但运行如下的语句:
                rmarkdown::run("E:/R/shiny.Rmd", render_args=list(encoding = 'UTF-8')),返回的提示是
                Error in yaml::yaml.load(string, ...) :
                Reader error: invalid trailing UTF-8 octet: #DA at 9

                这要咋个处理啊?含shiny语句的UTF-8形式的Rmd文件,run语句中的参数该咋设置啊?
                叩谢谢老大!!