Read more

When Sass-generated stylesheets print a Encoding::CompatibilityError

Henning Koch
October 23, 2014Software engineer at makandra GmbH

We upgraded a Rails 2 application to Rails 3.2 and Ruby 2.1, changed the mysql adapter from mysql to mysql2, but did not activitate the asset pipeline. Instead we used Sass the old-school way (stylesheets in public/sass/*.sass) and relied on stylesheet_link_tag to activate the Sass compiler.

Illustration online protection

Rails Long Term Support

Rails LTS provides security patches for old versions of Ruby on Rails (2.3, 3.2, 4.2 and 5.2)

  • Prevents you from data breaches and liability risks
  • Upgrade at your own pace
  • Works with modern Rubies
Read more Show archive.org snapshot

Now all Sass-generated stylesheets inserted the following text into body:before:

Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ASCII-8BIT

I could get rid of this by removing all generated .css files in public and clearing the tmp/sass-cache directory.

When this didn't help, try do add these following two lines above YourAppName::Application.initialize! in your environment.rb:

Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8

Note that this error can also be caused by other things during an upgrade from Ruby 1.8.7 to something higher. See Google.

Posted by Henning Koch to makandra dev (2014-10-23 13:05)