Несовместимая ошибка кодировки символов - при записи файла xls - PullRequest
0 голосов
/ 31 октября 2011

Мне нужно сгенерировать отчет в формате .xls, при попытке записать данные я получаю следующую ошибку

~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/excel/writer/workbook.rb:515:in `block in _write_sst': incompatible character encodings: ASCII-8BIT and US-ASCII (Encoding::CompatibilityError)
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/excel/writer/workbook.rb:502:in `each'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/excel/writer/workbook.rb:502:in `each_with_index'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/excel/writer/workbook.rb:502:in `_write_sst'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/excel/writer/workbook.rb:489:in `write_sst'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/excel/writer/workbook.rb:439:in `write_from_scratch'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/excel/writer/workbook.rb:620:in `write_workbook'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/writer.rb:15:in `block in write'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/writer.rb:14:in `open'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/writer.rb:14:in `write'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/spreadsheet-0.6.4/lib/spreadsheet/workbook.rb:106:in `write'
    from lib/parse_fellow.rb:449:in `generate_match_report_fellow'
    from lib/parse_fellow.rb:547:in `<top (required)>'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/railties-3.0.7/lib/rails/commands/runner.rb:48:in `eval'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/railties-3.0.7/lib/rails/commands/runner.rb:48:in `<top (required)>'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/railties-3.0.7/lib/rails/commands.rb:39:in `require'
    from ~/.rvm/gems/ruby-1.9.2-p180@ash/gems/railties-3.0.7/lib/rails/commands.rb:39:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

Номер строки 449 файла parse_fellow.rb равен

workbook.write("#{RAILS_ROOT}/lib/#{file}")

Перед передачей значения в объект моей книги я попытался кодировать их в ASCII и UTF-8, используя следующий метод, но ни один из них не помог мне

"my text content".force_encoding("ASCII-8BIT")

Моя среда разработки:

ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]
Rails 3.0.7
spreadsheet (0.6.4)

Понятия не имею, что здесь происходит и как отладить эту проблему. Любой вклад будет очень полезным для меня.

1 Ответ

1 голос
/ 02 ноября 2011

И все же я не знаю, в чем проблема. К сожалению, я не смог найти здесь кого-то еще, кто пережил подобную ситуацию.

Я решил эту проблему, пытаясь использовать другую доступную версию гема, наконец, она работала со следующей версией.

gem "spreadsheet", '0.6.5.9'
...