Erreur de conversion d'encodage de ASCII-8bit à UTF-8 dans les journaux

Je vois cet avertissement dans les journaux, je ne suis pas sûr de sa provenance. Je ne l’ai jamais vu auparavant, il a commencé après la mise à niveau de la version 3.2.0 à la version 3.3.0.

C’est le seul avertissement autour des horodatages, aucune autre erreur/avertissement (j’ai d’abord pensé que c’était lié aux e-mails, mais je ne vois aucune erreur ou e-mail rejeté à ce moment-là).

Installé

3.3.0.beta2-dev

(777b8f6d51)

Message (4 copies signalées)

RequestTracker.get_data a échoué : Encoding::UndefinedConversionError : « \xA1 » de ASCII-8BIT vers UTF-8

Trace

/var/www/discourse/lib/middleware/request_tracker.rb:190:in `encode'
/var/www/discourse/lib/middleware/request_tracker.rb:190:in `get_data'
/var/www/discourse/lib/middleware/request_tracker.rb:207:in `log_request_info'
/var/www/discourse/lib/middleware/request_tracker.rb:320:in `call'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/engine.rb:530:in `call'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/railtie.rb:226:in `public_send'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.8.1/lib/rails/railtie.rb:226:in `method_missing'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rack-2.2.9/lib/rack/urlmap.rb:74:in `block in call'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rack-2.2.9/lib/rack/urlmap.rb:58:in `each'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rack-2.2.9/lib/rack/urlmap.rb:58:in `call'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/unicorn-6.1.0/lib/unicorn/http_server.rb:634:in `process_client'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/unicorn-6.1.0/lib/unicorn/http_server.rb:739:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/unicorn-6.1.0/lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/unicorn-6.1.0/lib/unicorn/http_server.rb:143:in `start'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/unicorn-6.1.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `<main>'

Il semble y avoir un problème avec un robot d’exploration Web spécifique ; cela ne devrait pas vous affecter. :thinking:

Ici, il y a un problème avec l’encodage de l’agent utilisateur du robot d’exploration en UTF-8, car il contient un octet invalide.
scrub est censé faire cela. Peut-être que l’utilisation du paramètre :undef peut aider ici :
user_agent.encode("utf-8", :undef => :replace)

image

[51] pry(main)> string = "hello \xa1\x28world\x29".force_encoding("ASCII-8BIT")
=> "hello \xA1(world)"
[52] pry(main)> string.encode('utf-8')
Encoding::UndefinedConversionError: "\xA1" from ASCII-8BIT to UTF-8
from (pry):52:in `encode'
[53] pry(main)> string.encode('utf-8', :undef => :replace)
=> "hello �(world)"
4 « J'aime »

Ça a l’air bien, une PR ?

2 « J'aime »

Une correction a été fusionnée. :+1:

4 « J'aime »

Beau travail ! :clap: :smiley: :dragon:

2 « J'aime »

Ce sujet a été automatiquement fermé après 3 jours. Les nouvelles réponses ne sont plus autorisées.