銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

Visual Studioからdocker composeを使っていて、突然「unexpected character "»" in variable name near "\ufeff" 」というエラーが出たら

"\ufeff" はかの有名なByte Order Mark(BOM)です。 現状のdocker composeでは.envファイルなどにBOMがあると正しく処理ができずエラーになるようです。

github.com

Visual Studio使わない場合でも起こりえると思いますが、Visual Studioを使った docker composeの起動で発生しました。この図のようにdocker compose用のプロジェクトに.envファイルを配置できるのですが、

最初作成したときは動作していたものの、一度Visual Studioを閉じて、開き直したタイミングでタイトルのエラーが出ました。どうやらBOM付UTF-8で保存されてしまったようです。

BOMなしに変更するには、Visual Studioの「ファイル」メニューで名前を付けて保存を選び、同じファイル名で上書き保存のオプションでエンコード付きで保存を選び、

Unicode (UTF-8シグネチャなし)を選び保存します。

以上で動作するようになりました。