4

コマンドラインで、またはコマンドラインから以下のコードを実行すると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_file最初は、入力(または)に何か問題があると思ったので、new_fileそれらをラップしました。また、との内容が正しい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

4

2 に答える 2

4

ソース コードに目に見えない非 ASCII 文字が含まれている可能性があります。これは、どこかの Web サイトからコードをコピー アンド ペーストすることによって追加された可能性があります。

具体的には、UTF-8 としてエンコードされた不正なソフト ハイフンがコードに含まれています (ソフト ハイフン = UTF-8 の C2 AD、または 8 進エスケープ表記の \302\255)。

最善の方法は、テキスト エディターで「非表示を表示」して、他のスペースとは異なるスペースを見つけることができるかどうかを確認することです。

EDITスニペットをテキスト エディターに貼り付けると、直後FileUtils.(.との間mv) にソフト ハイフンが表示されます。FileUtils.mv文字が表示されない場合は、文字を削除して再入力してください。

于 2013-02-13T21:46:06.137 に答える