主に自分用の備忘録です。(記載内容は自己解釈なので、書いてあることが正しいとは限らないし、解釈が変われば修正もします。)

2018年7月29日日曜日

【Ruby】ヒアドキュメントを使うとエラーが出る

【環境】
OS: Windows8.1 Pro (64bit)
CPU: Intel Core i7-3770 (3.40GHz 3.39GHz)
RAM: 16GB
Rubyのバージョン: 2.5.1p57

【現象】

下記Rubyのソースコードを実行すると、

print(<<"EOS")
こんにちは
EOS

下記エラーが出る。
syntax error, unexpected tCONSTANT, expecting ')' →文法エラー
unterminated string meets end of file  →引用符の綴じ忘れ



上記のソースコード自体は、文法エラーでも引用符綴じ忘れでもない。

【原因】
エディタで保存する時に、BOM付きになっていて、ソースコードが正しくRubyに読み込まれていなかったため。




【対処】
エディタでBOM無しにして保存する。
尚、エディタによっては、BOM無しのUTF-8を「UTF-8N」と表記するものがある。

サクラエディタ:
「名前を付けて保存」時にBOMのチェックを外す。

TeraPad:
[表示]→[オプション]→[文字コード]から初期文字コードを「UTF-8N」にする。