RScript中的编码差异

时间:2018-08-16 17:27:30

标签: r

我一直在为需要同时在RStudio和RScript中运行的程序遇到编码问题。在浪费了半天时间之后,我有了一个麻烦的解决方法,但想了解为什么RScript版本实际上是UTF-8时为什么将字符串标记为latin1,以及是否有比我的解决方案更好的选择。示例:

x <- "Ø28"
print(x)
print(paste("Marked as", Encoding(x)))
print(paste("Valid UTF = ", validUTF8(x)))
x <- iconv(x, "UTF-8", "latin1")
print(x)

在RStudio中,输出为:

[1] "Ø28"
[1] "Marked as latin1"
[1] "Valid UTF =  FALSE"
[1] NA

,并且在Windows的批处理文件中使用RScript运行时,相同代码的输出为:

[1] "Ã\23028"
[1] "Marked as latin1"
[1] "Valid UTF =  TRUE"
[1] "Ø28"

在后一种情况下,在R程序中通过简单赋值定义的字符串被标记为Latin-1(实际上它是UTF-8)并没有给我带来什么帮助。最后,我使用的解决方案是编写一个函数,该函数使用validUTF8测试字符变量的实际(而不是声明的)编码,如果返回TRUE,则使用iconv转换为latin1。由于我不得不反复打电话,所以仍然有些痛苦,拥有一个全局解决方案会更好。关于R的编码问题,有很多地方,但是在使用RScript运行程序时,我找不到解决该问题的方法。有什么建议么?

R 3.5.0,RStudio 1.1.453,Windows 7 / Windows Server 2008(不要问...)

0 个答案:

没有答案