お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

ハワイ島 情報・観光ガイド

ブログ(Blog)

その他

関連サイト

: 日付別 アーカイブ :

2007年5月 8日

2007年5月 8日

ruby での「 Invalid char `\357' in expression 」エラーメッセージ

rubyのプログラムを実行してみて、
C:\soft\ruby>ruby URLencodeUTF8.rb
URLencodeUTF8.rb:1: Invalid char `\357' in expression
URLencodeUTF8.rb:1: Invalid char `\273' in expression
URLencodeUTF8.rb:1: Invalid char `\277' in expression
のようなエラーメッセージに遭遇することがあるかもしれない。

このエラーの原因は昨日のブログ 「UTF-8 と UTF-8N の違いは何か?」 でレポートした ユニコードの「バイトオーダーマーク (BOM:Byte Order Mark)」が原因である。 ちなみに 昨日のブログで
BOMの値は 具体的には上記の通り、「U+FEFF」である。 このBOMの値のUTF-8での表現は3バイトとなり 16進数の「 EF BB BF 」となる。 ちなみにこれを8進数で現すと「 357 273 277 」となる。
と書いたが、この「 357 273 277 」って rubyからのエラーメッセージの中にしっかり含まれている。

問題の原因がわかれば解決策は簡単である。 昨日のブログでも書いたが、 rubyのソース・ファイルを 例えば、「TeraPad」や「Xyzzy」のような UTF-8 と UTF-8N の両方に対応したエディターを使って開き、 改めて「UTF-8N」を指定して保存すること。

ちなみに、rubyを実行する際、 ユニコードを指定する「-Ku」オプションを付けた場合は、
C:\soft\ruby>ruby -Ku URLencodeUTF8.rb
URLencodeUTF8.rb:1: undefined method `・ソrequire' for main:Object (NoMethodError)
のようなエラーとなった。 結局「-Ku」オプションをつける場合でも、 ソースファイルは「UTF-8N」で保存する必要があるようだ。

【参考リンク】

カテゴリー: 文字コード・文字化け     22:43 | コメント (0) | トラックバック (2)

 
ハワイ島での遊覧飛行ツアーとB&Bのスペシャリスト、スカイメリカ
Copyright © 2003,2009 Skymerica Corp. All rights reserved.