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

时间:2013-02-13 21:42:39

标签: ruby

当我在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中我还检查了{{1}的内容1}}和old_file是正确的。

如果我致电new_file,我会得到以下内容;

puts old_file + " ++ " + new_file

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

我有read how FileUtils is meant to be used并且看不到任何我做错的事,有人可以提出建议吗?

如果它有助于我的Ruby版本为/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

2 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:1)

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