2012-02-24 7 views
2

私は(CMDプロンプトでルビーanyfile.rb)ファイルを実行しようとしていると、Windowsで動作しません。エラー:ルビーUTF-8エンコーディングも、次の内容のマジックコメント

Rubyは魔法のコメントを理解していないようです
invalid multibyte char (UTF-8) 

...

EDIT:私は "#エンコーディング:UTF-8" を削除した場合は、コマンドを実行します

ruby-E:UTF-8 encoding.rb 

それはどんなアイデアですか?

EDIT2:私が実行します。

ruby -e 'p [Encoding.default_external, Encoding.default_internal]' 

私はを得た[#Encoding:CP850はnil]は、多分私のEncoding.default_externalは間違っています!

環境:

  • のWindows XP(はい、私も+ルビーの窓を憎む)
  • ルビー1.9.2p180(2011-02-18)[i386の-MINGW32]
+1

これはあなたを助けるでしょうか? http://stackoverflow.com/questions/5475947/ruby-1-9-invalid-multibyte-character-utf-8 – rubiii

+0

残念ながらありません。私はメモ帳を使用してファイルを作成しました。 – rGiosa

+0

あなたはutf-8としてファイルを安全にしていると確信していますか? – rubiii

答えて

0

てみてください

# encoding: iso-8859-1 

テキストのすべてがutf8であるとは限りません。

+0

エラーはもう発生しませんが、出力が正しくありません。それはどのように行ったのです: "áá"ではなく "ßß"。 – rGiosa

3

私はこれが古典的なケースであると信じています。「あなたが蹄を聞いた場合、馬はゼブラではないと思う」と私は信じています。

エラーメッセージは、ファイル内に有効なUTF-8マルチバイトシーケンスではないバイトシーケンスがあることを示しています。

It seems that Ruby does not understand the magic comment...

は、あなたが言うようにすることを確実に可能であり、それまでの今まで誰もあなたが実際にしようとする人類の歴史の中で最初の人物であるため、マジックコメントは、実際に動作しないことに気づいていません魔法のコメントを使用します。 (魔法のコメントが存在しない場合はASCIIがデフォルトエンコーディングであるため、実際には、これが可能でないです。ルビーは魔法のコメントを理解していなかった場合、それは、無効ASCII文字に文句を言うでしょう。)

または、実際にはで、ファイル内の無効なマルチバイトUTF-8シーケンスです。

あなたはどちらがおそらくどちらかと思いますか?私があなただったら私のファイルをチェックします。

+0

Ok、thx! "#include:utf-8"を削除し、 "ruby-E:UTF-8 encoding.rb"のようなコマンドプロンプトを実行すると、それはどんなアイデアですか? – rGiosa

0

ファイルをメモ帳に保存したときにエンコードドロップダウンから 'UTF-8'を選択してもよろしいですか?私はXPマシンでこれを試したところ、あなたのコード例が私のために働いていました。

+0

私はメモ帳で新しいファイルを作成し、UTF-8として保存しました。プロンプトの出力は "├├├í"です。あなたが行ったテストでは、結果が「áá」でしたか? – rGiosa

+0

はい、私は試してみました。 – Eifion

+0

お願いします。あなたの出力は何ですか? ruby -e 'p [Encoding.default_external、Encoding.default_internal]' – rGiosa

2

私は魔法のように言われても、UTF-8として保存されていないファイルについては、時々同様の問題が発生しました。

Ruby 1.9.2には、WindowsのコマンドプロンプトのデフォルトであるUTF-8をコードページ850と437に正しく変換する問題があることがわかりました。

Ruby 1.9.3(最新はpatchlevel 125)にアップグレードすることをお勧めします。これは、特にWindows上で多くのエンコーディングの問題を解決します。

また、保存されたファイルにUnicode BOMが含まれていないことを確認して(プレーンなUTFです)、適切に保存されていることを確認します。それを確認するために

、あなたはあなたが正しくアクセント付きの文字が表示されるはずですユニコード(chcp 65001)にコンソールでコードページを切り替えるとtype myscript.rb

を試すことができます。

最後に無少なくとも、確実にあなたのコマンドプロンプトはとても拡張文字が正しく表示されているTrueTypeフォントを使用しています。

希望に役立ちます。

関連する問題