Windows上のSASS(SCSS)でUTF-8を使う方法(Invalid Windows-31J characterエラーが出る場合の対処)

vector-wrench-and-screwdriver-xxl-icon_sizeXS.jpg

Windows 環境で CSS プリプロセッサ「SASS(SCSS)」使用時に、

Error: Invalid Windows-31J character "\xXX"

というエラーが出る場合の対処方法のメモです。

ここでは、コンパイル後の CSS を UTF-8 エンコーディングで出力する前提とします。

対処方法は色々ありますが、とりあえずペペっと解決するなら、次の3つの方法が手軽でしょう。

  • 対処1:sass コマンド使用時に「-E utf-8」オプションを指定する
  • 対処2:Compass のプロジェクトファイル「config.rb」で「Encoding.default_external = 'utf-8'」を指定する。
  • 対処3:scssファイルの先頭に「@charset "UTF-8";」を指定。
    (※@charset は先頭に記述します。その前に1文字も記述してはいけません。)

対処1の応用になりますが、NetBeans から Sass を使っている場合は、CSSプリプロセッサのコンパイラオプションとして「-E utf-8」を指定してやるのが良いでしょう。
UseUTF-8EncodingInSassOnWindows

また、そもそも論になりますが、Sass に限らず Windows 上で Ruby 系ツールを使う場合のエンコーディングを UTF-8 化するには、Windows の「chcp 65001」コマンドを使う回避策もあるようです。

若干、無理矢理感はありますが、どうにもダメだと使う機会もありそうな予感はします。

Hatena Pocket Line

コメントを記入