ruby 2.0编码下的Serenity odt::CompatibilityError
这里有一个问题:在ruby 1.8.7下工作得很好,但在ruby 2.0.0p195下会发生一些事情。使用相同的模板和ruby代码时,会出现以下错误: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
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文件