googleガジェットのエラー

googleガジェットの自作中に、アップロードしたガジェットを指定した際に出たエラー。

追加したガジェットは無効です Unsupported feature:
org.apache.shindig.common.xml.XmlException:
Content is not allowed in prolog. At: (1,1)


メッセージの「At: (1,1)」の部分から判断すると、ファイルの先頭1文字目から間違っているらしい。というかこの場合は「XML宣言の前に余計なものを書くな」という解釈がより適切か。しかし、ファイルを肉眼で見た感じでは問題がないように見える。

で、バイナリエディタで開いてみてみると、「EF BB BF」の3バイトがXML宣言の前に入っていることがわかった。「efbbbf」をググるとUTF-8であることを明示するためのBOM(byte order mark)であることがわかり、これがあると動かないケースがあるとの説明を発見(※)。で、BOM部分を削除してアップロードしたところ正常に動いた。

(※)逆になければ動かないケースも、あってもなくても動くケースもある。アプリやシステムの仕様による。


今回の原因は、以下の3点です

  1. googleのガジェットがBOMつきのUTF-8を許容していないこと
  2. googleのガジェットの制約を理解していない状態でガジェットを作成したこと
  3. 私がガジェットを作成する際にBOMつき形式で保存していたこと

 ただ、「Google Gadget Editorで保存すると、BOM付きのUTF-8で保存」なんて情報もありました。 

SIROの独り言:mixiアプリを作るまで ~その0~ - livedoor Blog(ブログ) 
http://blog.livedoor.jp/siro1978jp/archives/51533733.html