Sass/Compassで”invalid byte sequence in Windows-31J” エラーが出たのでその対応
Ruby2.0にアップデートしたら、Sass/Compassでエラーが出るように
Ruby2.0にアップデートしたところ、CompassでSassのコンパイルを行う時に下記のエラーが出てしまうようになりました。
invalid byte sequence in Windows-31J Run with --trace to see the full backtrace
参考
こちらのページが参考になりました。どうやら、Windows環境でRuby製のツールを使う時にエンコーディングが問題となるようです。
対応方法
Encoding.default_external = 'UTF-8'
config.rbの一番上に、この1行を追加したところ、”invalid byte sequence in Windows-31J” エラーは出なくなりました。
エラーの起きていた箇所
スプライト画像をCompassを使って作成しています。このスプライト画像が、デフォルトでは”sprite-s8fcadae08d.png”のように、自動でハッシュ文字列(s8fcadae08d の部分)が加えられてしまうのを、config.rbに下記のコードを追加することで、作成したスプライト画像とCSSからハッシュ文字列を削除するようにしていました。
この部分を削除すると、エンコーディングをUTF-8に指定せずともエラーは出ません。
下記コードは css – How to remove the hash from Compass’s generated sprite image filenames? – Stack Overflow で紹介されているものそのままです。
# Make a copy of sprites with a name that has no uniqueness of the hash. on_sprite_saved do |filename| if File.exists?(filename) FileUtils.cp filename, filename.gsub(%r{-s[a-z0-9]{10}\.png$}, '.png') end end # Replace in stylesheets generated references to sprites # by their counterparts without the hash uniqueness. on_stylesheet_saved do |filename| if File.exists?(filename) css = File.read filename File.open(filename, 'w+') do |f| f << css.gsub(%r{-s[a-z0-9]{10}\.png}, '.png') end end end
+ There are no comments
Add yours