Some browsers have issues with stylesheets that contain multiple `@charset` definitions. The issue surfaces while using Sass since it inserts a `@charset` at the top of each file. Then Sprockets concatenates them together.
The `CharsetNormalizer` processor strips out multiple `@charset` definitions.
The current implementation is naive. It picks the first `@charset` it sees and strips the others. This works for most people because the other definitions are usually `UTF-8`. A more sophisticated approach would be to re-encode stylesheets with mixed encodings.
This behavior can be disabled with:
environment.unregister_bundle_processor 'text/css', Sprockets::CharsetNormalizer
# File lib/sprockets/charset_normalizer.rb, line 25 25: def evaluate(context, locals, &block) 26: charset = nil 27: 28: # Find and strip out any `@charset` definitions 29: filtered_data = data.gsub(/^@charset "([^"]+)";$/) { 30: charset ||= $1; "" 31: } 32: 33: if charset 34: # If there was a charset, move it to the top 35: "@charset \"#{charset}\";#{filtered_data}" 36: else 37: data 38: end 39: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.