问题我应该已经查明:目前Sweave对编码信息的获取不是通过options('encoding')
来的,而是通过检测Rnw文档中的声明\usepackage[foo]{inputenc}
,如果有这么一行,则使用foo编码,参见帮助文档?Sweave
。所以楼主的问题有两种解决方式:
1. 在Rnw文档中加入一行\usepackage[utf8]{inputenc}
;或者
2. 用Sweave(..., encoding = 'UTF-8')的方式运行Sweave
关于pgfSweave,它没有跟上官方Sweave的变化,所以Windows下的编码问题暂时还无法克服,这个我得看看源代码并联系作者。
Sweave这事儿我说过几遍了,它的代码写得非常不灵活,极难扩展,在90年代可能的确是个很NB的成果,但现在来看,每看一遍都有一次想重写它的冲动。以前在R-help里讨论过几次,貌似有点得罪作者和R core,挨了几次骂,现在我也不吱声了。