FileUtils.mv抛出无效的char \ 302和\ 255exception

当我在CodeRunner运行以下代码或从命令行运行时,我得到以下错误;

 Untitled.rb:25: Invalid char '\302' in expression Untitled.rb:25: Invalid char '\255' in expression 

第25行对应于FileUtils.mv方法的行。

 if the_file.include? "Screen Shot" old_file = Shellwords.escape(homepath + "/Desktop/" + the_file) new_file = Shellwords.escape(screen_shot_folder + "/" + the_file) FileUtils.mv old_file, new_file end 

最初我认为我的输入( old_filenew_file )有问题,这就是我将它们包装在Shellwords.escape中的Shellwords.escape我还检查了old_filenew_file的内容是否正确。

如果我调用puts old_file + " ++ " + new_file我得到类似下面的内容;

 /Users/tobyosbourn/Desktop/Screen\ Shot\ 2013-02-04\ at\ 10.49.14\ \(2\).png ++ /Users/tobyosbourn/Desktop/Screenshots/Screen\ Shot\ 2013-02-04\ at\ 10.49.14\ \(2\).png 

哪个看起来很好,但如果我将这些作为字符串复制并粘贴到FileUtils.mv中,我会收到相同的错误消息。

我已经阅读了如何使用FileUtils并且看不到任何我做错的事情,有人可以提供建议吗?

如果它有助于我的Ruby版本是1.8.7

您的源代码中有一个不可见的非ASCII字符 ,可能是通过在某个网站上复制并粘贴代码而添加的。

具体来说,你的代码中有一个流氓软连字符,编码为UTF-8(软连字符= UTF-8中的C2 AD,或八进制转义符号中的\ 302 \ 255)。

最好的办法是在文本编辑器中“显示隐形”,看看是否能找到与其他空间不同的空间。

编辑将您的代码段粘贴到我的文本编辑器中,在FileUtils.之后立即显示一个软连字符FileUtils. (介于.mv之间)。 删除FileUtils.mv并重新键入它以删除该字符,如果你看不到它。

在复制粘贴文本中除去不可见字符的另一种方法是首先将其复制到原始文本编辑器,例如Windows中的记事本或Linux中的Nano,它会自动清除大部分不需要的东西,编辑掉剩下的可疑内容。字符,然后从那里粘贴。 例如,如果我将FileUtils.mv粘贴到记事本中,我会得到FileUtils.¬mv