Padrino - Sass,Coffee - Encoding :: UndefinedConversionError,从ASCII-8BIT到UTF-8

时间:2012-05-31 06:45:56

标签: encoding coffeescript padrino

如何重现

的Gemfile

gem 'haml'
gem 'sass'
gem 'coffee-script'

应用/ app.rb

get '/javascripts/rus_test.js' do
  content_type 'text/javascript', charset: 'utf-8'
  coffee :"../../public/javascripts/rus_test"
end

public / javascripts / rus_test.coffee(这是工作)

alert 'Hello World!'

本地主机:3000 / Javascript角/ rus_test.js

(function() {

  alert('Hello World!');

}).call(this);

public / javascripts / rus_test.coffee(不起作用)

alert 'Привет!'

提供错误

在/javascripts/rus_test.js中编码:: UndefinedConversionError “\ xD0”从ASCII-8BIT到UTF-8

我尝试在 config / boot.rb 中设置几个Encoding.default变体。

启动初始化的变体之一

Padrino.before_load do
  Encoding.default_internal = nil
  # Encoding.default_external = 'ASCII-8BIT'
end

HAML的俄文版本有效,但不适用于SASS和COFFEE

我应该怎么做才能修复它?

1 个答案:

答案 0 :(得分:2)

删除荒谬的Encoding.default_internal = nil并将此代码添加到猴子补丁Tilt:

# this makes tilt to treat templates as properly encoded (respect Encoding.default_external)
module Tilt
  class CoffeeScriptTemplate
    def prepare
      @data.force_encoding Encoding.default_external
      if !options.key?(:bare) and !options.key?(:no_wrap)
        options[:bare] = self.class.default_bare
      end
    end
  end
end