1

Я работаю над проектом, который перемещается из рельсов 3.2 и рубинов 1.9.x в Ruby 2.2.x и рельсы версии 4.2.4.Проблема с кодировкой Ruby 2 и Rails 4

Когда проект идет на сервере производства, он начал бросать ошибки кодирования, как это:

"\xC3" from ASCII-8BIT to UTF-8

последовал StackTrace как:

["/var/www/suba/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/core_ext/object/json.rb:34:in `encode'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/core_ext/object/json.rb:34:in `to_json'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/core_ext/object/json.rb:34:in `to_json_with_active_support_encoder'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/json/encoding.rb:57:in `to_json'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/json-1.8.3/lib/json/common.rb:223:in `generate'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/json-1.8.3/lib/json/common.rb:223:in `generate'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/json/encoding.rb:101:in `stringify'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/json/encoding.rb:35:in `encode'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/json/encoding.rb:22:in `encode'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.4/lib/active_support/core_ext/object/json.rb:37:in `to_json_with_active_support_encoder'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/multi_json-1.11.2/lib/multi_json/adapters/json_common.rb:19:in `dump'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/multi_json-1.11.2/lib/multi_json/adapter.rb:25:in `dump'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/multi_json-1.11.2/lib/multi_json.rb:136:in `dump'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/resque-1.24.1/lib/resque/helpers.rb:25:in `encode'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/resque-1.24.1/lib/resque.rb:173:in `push'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/resque-1.24.1/lib/resque/job.rb:51:in `create'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/resque-1.24.1/lib/resque.rb:271:in `enqueue_to'" 
"/var/www/suba/vendor/bundle/ruby/2.2.0/gems/resque-1.24.1/lib/resque.rb:252:in `enqueue'" 
"/var/www/suba/app/controllers/call_center/chat_controller.rb:6:in `transcript'" 

и chat_controller.rb линии 6 на transcript метод:

def transcript 
    Resque.enqueue(Chat::SessionTranscript, read_request_body) 
    head :ok 
    end 

    def read_request_body 
    xml = request.body.read 
    Rails.logger.info("XML: #{xml}") 
    xml 
    end 

В другой точке нашей базы коды мы решили эту проблему с помощью кода, как:

string.encode("UTF-8", :invalid => :replace, :undef => :replace, :replace => "?") 

но та же ошибка начинает появляться и в других частях.

Прошли ли кто-нибудь для этого и как вы имеете дело?

Благодарим вас за продвижение.

+0

делает это так Q и ​​A покрывают вашу ситуацию? https://stackoverflow.com/questions/23309669/ruby-encode-xc3-from-ascii-8bit-to-utf-8-encodingundefinedconversionerr –

ответ

0

Я решил эту проблему путем замены, как 34 на

(...)/ActiveSupport-4.2.4/Библиотека/active_support/core_ext/объект/json.rb

для:

self.force_encoding('utf-8').to_json_without_active_support_encoder(options) 

 Смежные вопросы

  • Нет связанных вопросов^_^