ソースに意図してない ?
が入ってハマった対応。
環境
- OS: Ubuntu 12.04 64bit
- Ruby: ruby 1.8.7 (2012-02-08 patchlevel 358) [x86_64-linux]
- rvm: rvm 1.14.3 (stable)
- Ruby on Rails: 3.2.6
? がソースに勝手に入る
問題のソース。
1 | <html> |
1 | Hello Hoge!! |
1 | class HogeController < ApplicationController |
出力結果。
1 | <html> |
yield
部分に勝手に ?
が入ってる。
もちろんブラウザで見ても同位置に ?
が表示される。
試しに yield
を tapp
してみる。
1 | <html> |
出力結果。
1 | (1.7ms) COMMIT |
ログには出ないが、コピペしてみると謎の文字列 <feff>
が出現。
原因
<feff>
を調べてみると BOM であることがわかった。
バイトオーダーマーク (byte order mark) あるいはバイト順マーク(バイトじゅんマーク)は通称BOM(ボム)といわれる、Unicodeの符号化形式で符号化したテキストの先頭につける数バイトのデータのことである。このデータを元にUnicodeで符号化されていることおよび符号化の種類の判別に使用する。
そこで、 vim
でファイルを開くときに -b
のBOM表示オプションをつけて開いてみる。
1 | $ vim -b app/views/hoge/index.html.erb |
表示された内容がこれ。
1 | <feff>Hello Hoge!! |
頭に <feff>
の文字が表示されました。
これを削除すると正常に表示されました。
以上です。