【问题标题】:File path with Unicode characters in Rscript.exeRscript.exe 中带有 Unicode 字符的文件路径
【发布时间】:2016-04-10 07:34:04
【问题描述】:

我正在尝试将 SVG 图像保存到包含 Unicode 字符的文件路径中。例如:

n = c(2, 3, 5)
s = c("aa", "bb", "cc") 
b = c(TRUE, FALSE, TRUE) 
df = data.frame(n, s, b)

svg("c:/נועם/plots.svg")
plot(df)
dev.off() 

使用 Rscript.exe 运行此程序失败并出现以下错误:

plot.new() 中的错误:cairo 错误“写入输出流时出错”

我怎样才能让它工作?

【问题讨论】:

  • 看起来是 Windows 问题。
  • 我建议首先不要在希伯来语中创建目录名称。根据我的经验,仅使用英语工作是最安全的做法,可以避免此类问题和许多其他潜在问题。
  • 另外,看看当你做normalizePath("c:/נועם/plots.svg")时会发生什么@
  • 希伯来语只是作为一个例子。该脚本尝试写入用户本地文件夹(c:/users/),当帐户用户名包含 Unicode 字符时,我遇到了这个错误。
  • @NoamBehar 作为系统管理员我会支持 David 的建议,不要使用除了 ascii 字母之外的任何东西。带有 unicode 的用户名会导致问题,主目录管理起来很麻烦,NTFS 上的权限有时会挂起等。要修复您的脚本,请在用户家之外的其他地方编写。如果安全/权限是一个问题,请管理它们,而不是依赖文件的“应该是”状态,因为无论如何都无法保证。

标签: r svg unicode filesystems rscript


【解决方案1】:

您可以将工作目录设置为具有希伯来语名称的目录,而不是保存 svg 文件。请看下面的代码:

n <- c(2, 3, 5)
s <- c("aa", "bb", "cc") 
b <- c(TRUE, FALSE, TRUE) 
df <- data.frame(n, s, b)
setwd("C:\\נועם\\")
svg("plots.svg")
plot(df)
dev.off() 

【讨论】:

    【解决方案2】:

    聚会迟到了,但我认为将路径包装在enc2native() 函数中通常可以解决 Windows 下的编码问题,以我的经验。在您的情况下,您应该尝试

    svg(enc2native("c:/נועם/plots.svg"))
    

    【讨论】:

      猜你喜欢
      • 2013-09-02
      • 2013-07-03
      • 2012-04-14
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-02
      • 2013-06-02
      相关资源
      最近更新 更多