RHTML:警告:“在“mbcsToSbcs”接通”转换失败:斑点取代(Rhtml: Warning

2019-07-03 15:05发布

环境:

R诉。2.15.1在Mac OS 10.8.2,平台x86_64的-苹果darwin9.8.0 / x86_64的(64位)中,用RStudio IDE其被设置为使用UTF-8作为其默认编码。 操作系统也使用UTF-8。

> Sys.getlocale(category = "LC_ALL")
[1] "sk_SK.UTF-8/sk_SK.UTF-8/sk_SK.UTF-8/C/sk_SK.UTF-8/sk_SK.UTF-8"

目的:

产生从R HTML(的.rhtml)文件的HTML文件,其中包含具有扩展拉丁字符,如S或C的曲线图。

问题:

当我点击针织HTML,输出看起来是这样的:

plot(1:2, main = "šč")
## Warning: conversion failure on 'šč' in 'mbcsToSbcs': dot substituted for
## 
## Warning: conversion failure on 'šč' in 'mbcsToSbcs': dot substituted for
## 
## Warning: conversion failure on 'šč' in 'mbcsToSbcs': dot substituted for
## 
## Warning: conversion failure on 'šč' in 'mbcsToSbcs': dot substituted for
## <8d>
**Plot with correct characters despite the warnings.**

题:

是什么原因导致的问题,以及如何解决呢? 我怎么能至少摆脱这确实显示了生成的文件中的警告呢?

无望的注意事项:

我一直在寻找了几个小时或两个解决方案,发现了许多类似的情况,并尝试了许多不同的可能的解决方案(许多相关的PDF输出,如果我只使用Sweave被翘起以同样的方式),现在我从字面上绝望。

编辑于2012年11月9日:

在使用溶液Encoding()由@metasequoia提出的工作,但考虑到需要打印的代码,以及,优选没有该功能,我更喜欢通过使用函数@nograpes提供的方案pdf.options()

有趣的是,虽然,虽然

<!--begin.rcode
pdf.options(encoding='ISOLatin2.enc')
plot(cars, main="Ťažký")
end.rcode-->

产生相同的警告,

<!--begin.rcode
pdf.options(encoding='ISOLatin2.enc')
end.rcode-->

<!--begin.rcode
plot(cars, main="Ťažký")
end.rcode-->

按预期工作。 这是为什么? 我认为年表是所有R.运行命令时的事项

所以,我的目的,定解决方案是将

<!--begin.rcode echo="FALSE"
pdf.options(encoding='ISOLatin2.enc')
end.rcode-->

在我的每一个码的开始。

Answer 1:

The answer from @metasequoia works, but I wanted to add a few points. If you set the PDF options to a different encoding you won't need to wrap all your output text in Encoding. Run this before clicking Knit HTML:

pdf.options(encoding='ISOLatin2.enc')

Ripley talks about encoding issues, especially as the relate to PDFs, in a post here, and it may be of interest. Notably, this error will not occur in the same way on Windows, because encoding is handled in a completely different way.

A different encoding file may be needed for other languages, but this seems to work for Slovak.



Answer 2:

只是解释你找到了解决办法:

<!--begin.rcode
pdf.options(encoding='ISOLatin2.enc')
end.rcode-->

<!--begin.rcode
plot(cars, main="Ťažký")
end.rcode-->

这工作,而当你把两行相同的块,因为每一个代码块,不工作knitr打开一个新的图形设备记录图(默认情况下它是一个PDF设备)。 这是为时已晚来设置pdf.options()因为该设备已开始与当你把默认编码pdf.options()plot()在同一块。

在工作溶液中,当PDF设备针对第二块打开时,它继承从在前面的块中的设定的编码; 这是它如何正确产生的字符。

如果你不想设置每个RHTML文件的这个编码选项,你可以把它放在~/.Rprofile所以它会影响您的所有PDF设备。 或者你定义自己的函数来编织RHTML文件,例如:

knit2 = function(...) {
   pdf.options(encoding='ISOLatin2.enc')
   knitr::knit(...)
}

然后knit2('yourfile.Rhtml')



Answer 3:

使用的例子(在Mac OSXř2.15.1)的@nograpes再现的近似值:

pdf()
plot(1:2,main="šč")
dev.off()

我能够复制OP的错误代码。 包装“SC”与Encoding()淘汰的警告信息。

pdf()
plot(1:2,main=Encoding("šč"))
dev.off()


文章来源: Rhtml: Warning: conversion failure on '' in 'mbcsToSbcs': dot substituted for
标签: r encoding knitr