数カ月前の記事で、compassの新バージョンで@charsetが消えてしまう不具合のようなものがある!と書いてしまいましたが、僕の勘違いだったので、それについてまとめました。

@charsetが消えるのはsassの新しい仕様

コンパイルしたcssから@charset "UTF-8"の記述が消えてしまうのは、sassのバージョン3.4あたりからの仕様のようです。

まず、@charset "UTF-8"が消えるのは、コンパイル時の出力形式を:compressedにした時です。
:expanded等でコンパイルした場合には、@charsetも書き出されます。

:compressedでコンパイルした場合、@charsetが省略される代わりに、ファイルにUTF-8のBOMが追加されます
このBOMのおかげで、ブラウザはcssファイルの文字コードを適切に処理できるようです。

ちなみに、アップデートによる不具合は…

sassとcompassのアップデート時に、サイトの表示がわずかに変わってしまったので、てっきり@charsetが消えたせいだと思っていました。
しかし、検証してみたところ、それは全然別の部分が原因でした。(compassのVertical Rhythm関連の仕様変更が原因でした。)

今回の件に関しては、間違った情報を流してしまって申し訳ないです。
いずれにしても、sassやcompassのアップデートは、色々な仕様変更が生じるので注意が必要ですね。