ruby 2.0编码下的Serenity odt::CompatibilityError

ruby 2.0编码下的Serenity odt::CompatibilityError,ruby,encoding,Ruby,Encoding,这里有一个问题:在ruby 1.8.7下工作得很好,但在ruby 2.0.0p195下会发生一些事情。使用相同的模板和ruby代码时,会出现以下错误: incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError) /home/michael/.rvm/gems/ruby-2.0.0-p195/gems/serenity-odt-0.2.1/lib/serenity/generator.r

这里有一个问题:在ruby 1.8.7下工作得很好,但在ruby 2.0.0p195下会发生一些事情。使用相同的模板和ruby代码时,会出现以下错误:

incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError)
/home/michael/.rvm/gems/ruby-2.0.0-p195/gems/serenity-odt-0.2.1/lib/serenity/generator.rb:5:in `render_odt'
/home/michael/.rvm/gems/ruby-2.0.0-p195/gems/serenity-odt-0.2.1/lib/serenity/odteruby.rb:17:in `eval'
/home/michael/.rvm/gems/ruby-2.0.0-p195/gems/serenity-odt-0.2.1/lib/serenity/odteruby.rb:17:in `evaluate'
/home/michael/.rvm/gems/ruby-2.0.0-p195/gems/serenity-odt-0.2.1/lib/serenity/template.rb:19:in `block (2 levels) in process'
/home/michael/.rvm/gems/ruby-2.0.0-p195/gems/serenity-odt-0.2.1/lib/serenity/template.rb:16:in `each'
/home/michael/.rvm/gems/ruby-2.0.0-p195/gems/serenity-odt-0.2.1/lib/serenity/template.rb:16:in `block in process'
/home/michael/.rvm/gems/ruby-2.0.0-p195/gems/rubyzip-0.9.9/lib/zip/zip_file.rb:90:in `open'
/home/michael/.rvm/gems/ruby-2.0.0-p195/gems/serenity-odt-0.2.1/lib/serenity/template.rb:15:in `process'
/home/michael/.rvm/gems/ruby-2.0.0-p195/gems/serenity-odt-0.2.1/lib/serenity/generator.rb:5:in `render_odt'
此解决方案对我没有影响:


我的环境:Ubuntu 12.04.2 LTS x86\u 64 3.2.0-49-generic,rvm 1.21.2。

通过添加字符串
content=content.force\u编码('UTF-8')
/home/michael/.rvm/gems/ruby-2.0.0-p195/gems/serenity-odt-0.2.1/lib/serenity/template.rb

def process context
  tmpfiles = []
  Zip::ZipFile.open(@template) do |zipfile|
    %w(content.xml styles.xml).each do |xml_file|
      content = zipfile.read(xml_file)
      content = content.force_encoding('UTF-8')
      odteruby = OdtEruby.new(XmlReader.new(content))
      out = odteruby.evaluate(context)

      tmpfiles << (file = Tempfile.new("serenity"))
      file << out
      file.close

      zipfile.replace(xml_file, file.path)
    end
  end
end
def进程上下文
tmpfiles=[]
Zip::ZipFile.open(@template)do | ZipFile|
%w(content.xml styles.xml)。每个do | xml|u文件|
content=zipfile.read(xml\u文件)
content=content.force_编码('UTF-8')
odteruby=odteruby.new(XmlReader.new(content))
out=odteruby.evaluate(上下文)
TMP文件